[英]Java turning two arrays into one two-dimensional array
我的程序中有兩個具有相同長度的數組,courseGrades和courseCredits,看起來像這樣:
courseGrades[] = {A, A, B, A, C, A};
courseCredits[] = {1, 2, 1, 3, 2, 1};
我想將它們組合成一個二維數組,顯示如下:
A A B A C A
1 2 1 3 2 1
我將如何用Java做到這一點? 此外,您將如何引用此數組中的每個元素? 對不起這個非常簡單的問題,我還是Java的初學者。
您可以創建一個Pair
類,如下所示:
public class Pair<K, V> {
public K key;
public V value;
public Pair() {}
public Pair(K key, V value) {
this.key = key;
this.value = value;
}
}
然后創建一個Pairs
數組。 我已經有一段時間沒有使用Java了,所以我可能在這里犯了一些錯字,但這就是這個想法:
Pair<char, int> result[] = new Pair<char, int>[keys.length];
for (int i = 0; i < keys.length; i++) {
result[i] = new Pair<char, int>(keys[i], values[i]);
}
您似乎想將字符串數組和int
數組組合成2D數組。
在Java中,二維數組只能存儲一種東西,因此沒有類型安全的方法可以做到這一點。 一種不安全的方法是將它們存儲在Object[][]
:
String[] grades = {"A", "B", "C"};
Integer[] credits = {1, 2, 3};
Object[][] gradesAndCredits = { grades, credits };
for (int i = 0; i < gradesAndCredits.length ; i++) {
for (int j = 0 ; j < gradesAndCredits[i].length ; j++) {
System.out.print(gradesAndCredits[i][j] + " ");
}
System.out.println();
}
如果希望子String
的項目作為String
和Integer
,則需要強制轉換它們,這是類型不安全的。
另外,您可以將這些對存儲在HashMap
是它們對中的一個充當“鍵”,另一個充當“值”。
String[] grades = {"A", "B", "C"};
Integer[] credits = {1, 2, 3};
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0 ; i < grades.length ; i++) {
map.put(grades[i], credits[i]);
}
原來,您可以分配引用,但前提是該數組不是原語數組,例如int
或double
String[] letterGrades = { "A", "B", "C" };
int[] numberGrades = { 1, 2, 3 };
Object[][] combined = new Object[2][];
combined[0] = letterGrades;
combined[1] = numberGrades; // error here
因此,在這種情況下,您必須使用Integer[]
而不是int[]
Integer[]
或將元素復制到新數組中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.