我写了这个问题,因为我似乎无法找到任何符合我需要的答案。
我想要实现的目标:我想创建新数组,例如java中的array3
,它可以容纳来自不同数组的两个或多个数组,例如: array3 = [[array1],[array2],[arrayN]]。
在Python中,我知道如何将2个列表附加到第3个列表,例如:
list1 = [1, 2, 3]
list2 = [11, 22, 33]
list3 = []
for i in range(len(list1)):
list3.append([list1[i], list2[i]])
print(list3)
,结果将是:[[1, 11], [2, 22], [3, 33]]
我无法在Java中找到正确的答案。有没有办法在Java中实现这个目标?
添加了我所做的事情:
String[] list1 = integer1.split(";");
String[] list2 = integer2.split(";");
String[] list3 = integer3.split(";");
String[] list4 = integer4.split(";");
int lenOfList1 = list1.length;
int lenOfList2 = list2.length;
int lenOfList3 = list3.length;
int lenOfList4 = list4.length;
int result1 = Integer.compare(lenOfList1, lenOfList2);
int result2 = Integer.compare(lenOfList3, lenOfList4);
int result3 = Integer.compare(result1, result2);
ArrayList<String> ar = new ArrayList<String>();
if (result3 == 0) {
System.out.println("This is result: " + result3 + ", and we are good to go now!");
for(int i=0; i < lenOfList1; i++){
ar.add(list1[i]);
ar.add(list2[i]);
ar.add(list3[i]);
ar.add(list4[i]);
}
} else {
System.out.println("This is result: " + result3 + ", and this is the end!");
}
答案 0 :(得分:2)
我只想创建一个方法来重新组合二维列表。
使用简单的varargs方法,如:
public static <T> List<List<T>> groupArrays(T[]... arrays){
这样,您可以将所需数组传递给该方法。实现看起来像
public static <T> List<List<T>> groupArrays(T[]... arrays){
if(arrays.length == 0){
throw new IllegalArgumentException("No arrays to concat");
}
//Find the longuest array to know how many inner list to create
int maxLength = arrays[0].length;
for(int i = 1; i < arrays.length; ++i){
maxLength = Math.max(maxLength, arrays[1].length);
}
//creating those now reduce the complexity in the next loop.
List<List<T>> lists = new ArrayList<>();
for(int i = 0; i < maxLength; ++i){
lists.add(new ArrayList<>());
}
for(T[] array : arrays){
for(int i = 0; i < array.length; ++i){
lists.get(i).add(array[i]);
}
}
return lists;
}
然后,只需将其称为:
Integer[] a1 = {1, 2};
Integer[] a2 = {11, 22, 33, 44};
Integer[] a3 = {111, 222, 333};
List<List<Integer>> result = groupArrays(a1, a2, a3);
System.out.println(result);
[[1,11,111],[2,22,222],[33,333],[44]]
答案 1 :(得分:1)
您可以尝试使用List<List<dataType>>
对你:
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(11);
list2.add(22);
list2.add(33);
List<List<Integer>> list3 = new ArrayList<>();
for (int i = 0; i <list1.size(); i++) {
List<Integer> tempList = new ArrayList<>();
tempList.add(list1.get(i));
tempList.add(list2.get(i));
list3.add(tempList);
}
System.out.println(list3);
<强>输出:强>
[[1, 11], [2, 22], [3, 33]]