簡體   English   中英

Java將兩個數組變成一個二維數組

[英]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的項目作為StringInteger ,則需要強制轉換它們,這是類型不安全的。

另外,您可以將這些對存儲在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]);
}

原來,您可以分配引用,但前提是該數組不是原語數組,例如intdouble

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM