如何在Java中合并两个数组?

时间:2010-12-16 09:37:56

标签: java arrays

它不是连接而是合并两个数组,以便它们成为名称值对的数组。

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

最好的方法是什么?

3 个答案:

答案 0 :(得分:4)

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;
}

答案 1 :(得分:2)

var result = [];

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

依赖于具有一对一关系的2个数组。

答案 2 :(得分:1)

我建议您使用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数组。