簡體   English   中英

如何合並Java中的兩個arrays?

[英]How to merge two arrays in Java?

它不是連接而是合並兩個 arrays 以便它們成為名稱值對的數組。

firstarray = ["a","aa","aaa"]
secondarray = ["b","bb","bbb"]
result = [["a","b"],["aa","bb"],["aaa","bbb"]]

最好的方法是什么?

在Java中:

public static int [][] concat(int a[], int b[]) {
    int res[][] = new int[a.length][2];
    if (a.length != b.length) {
        throw new IllegalArgumentException("lenght are not equal, cannot perform");
    }
    for (int i = 0; i < a.length; i++) {
        res[i][0] = a[i];
        res[i][1] = b[i];
    }
    return res;
}
var result = [];

for(var i = 0; i<firstarray.length; i++) {
  result[i] = [firstarray[i], secondarray[i]];
}

依賴於兩個數組具有一對一的關系。

我建議您使用Java集合類,並避免使用數組。 僅在必要時使用數組(例如,出於性能原因)。 否則,請繼續學習並精通Java Collections API。

如果要解決此問題,假設第一個列表具有唯一項(即沒有重復項),則我將有兩個List實例(與數組相對)。 然后,我將創建一個Map實例,將兩個列表的內容放入其中。 LinkedHashMap用於確保保留第一個列表中項目的順序。

這是示例代碼:

List<String> first = Arrays.asList(new String[] {"a", "aa", "aaa"});
List<String> second = Arrays.asList(new String[] {"b", "bb", "bbb"});
Map<String, String> keyValuePairs = new LinkedHashMap<String, String>();
for (int i = 0, count = first.size(); i < count; ++i) {
    keyValuePairs.put(first.get(i), second.get(i));
}

如果不能假設第一個列表具有唯一值,那么我將使用List<List<String>> 這是示例代碼:

List<String> first = Arrays.asList(new String[] {"a", "aa", "aaa"});
List<String> second = Arrays.asList(new String[] {"b", "bb", "bbb"});
List<List<String>> listOfList= new ArrayList<List<String>>();
for (int i = 0, count = first.size(); i < count; ++i) {
    List<String> list = new ArrayList();
    list.add(first.get(i));
    list.add(second.get(i));
    listOfList.add(list);
}

我認為我不能充分強調這一點-避免使用數組,除非無法用Java集合類做您想做的事情。 我唯一一次使用數組是為了在可驗證的瓶頸中提高性能。 即便如此,我還是嘗試找到一種圍繞設計性能而不是使用Java數組的設計方法。

public static int[] getmerge(int[] a, int[] b) {
    int[] c = new int[a.length + b.length];
    for (int i = 0; i < c.length; i++) {
        if (i < a.length) {
            c[i] = a[i];
        }
        if (i < b.length) {
            c[a.length + i] = b[i];
        }
    }
    return c;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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