[英]Merge arrylists and save as arraylist with in arraylist
我有 3 個數組列表,我想將這些數組列表合並到一個數組列表中,例如,將所有數組列表的第一個對象合並到一個數組列表中,並將該數組列表作為新數組列表的第一個對象,將所有數組列表的第二個對象合並到一個數組列表中,然后將其放入arraylist 作為新 Arraylist 的第二個對象,所以我需要輸出是否有可能做到這一點
這是一個例子,list1、list2和list3是你已經擁有的三個列表
ArrayList<ArrayList> oneBigList = new ArrayList<ArrayList>();
ArrayList[] groups = new ArrayList[list1.size()];
for(int i = 0; i < groups.length(); i++)
{
groups[i] = new ArrayList();
groups[i].add(list1.get(i);
groups[i].add(list2.get(i);
groups[i].add(list3.get(i);
oneBigList.add(groups[i]);
}
現在 oneBigList 將是一個數組數組; 每個數組包含來自前 3 個 ArrayLists 的給定索引 (i) 的 3 個元素
這是假設ArrayList
的大小不同的一種方法。
您有三個 ArrayList,例如:
List<Integer> arr1 = Arrays.asList(1,2,3,4);
List<Integer> arr2 = Arrays.asList(5,6,7);
List<Integer> arr3 = Arrays.asList(1,2,3,4,5);
首先,您需要找到具有更多值的那個,因為帶有結果的ArrayList
將具有該長度:
int maxLength = Math.max(arr1.size(), Math.max(arr2.size(), arr3.size()));
List<List<Integer>> finalArrayList = new ArrayList<List<Integer>>(maxLength);
然后,在一個迭代for
塊中的所有名單,獲得指標的值依次並將其添加到最終ArrayList
使用時間ArrayList
和檢查,如果該指數是規模內ArrayList
:
for(int i = 0; i < maxLength; i++) {
List<Integer> temp = new ArrayList<Integer>();
if(i < arr1.size()) {
temp.add(arr1.get(i));
}
if(i < arr2.size()) {
temp.add(arr2.get(i));
}
if(i < arr3.size()) {
temp.add(arr3.get(i));
}
finalArrayList.add(temp);
}
之后, finalArrayList
將具有:
[[1, 5, 1], [2, 6, 2], [3, 7, 3], [4, 4], [5]]
你所要求的基本上是一個轉置函數。
這是一個使用Iterator
的示例,它可以處理任意數量的列表,並且每個列表的大小可以不同。
List<List<Integer>> input = Arrays.asList(Arrays.asList(1,2,3,4),
Arrays.asList(5,6,7),
Arrays.asList(8,9,10,11,12));
Iterator<Integer>[] iters = new Iterator[input.size()];
int i = 0;
for (List<Integer> list : input)
iters[i++] = list.iterator();
List<List<Integer>> output = new ArrayList<>();
while (true) {
List<Integer> sublist = new ArrayList<>(iters.length);
for (Iterator<Integer> iter : iters)
if (iter.hasNext())
sublist.add(iter.next());
if (sublist.isEmpty())
break;
output.add(sublist);
}
System.out.println("Input: " + input);
System.out.println("Output: " + output);
輸出
Input: [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10, 11, 12]]
Output: [[1, 5, 8], [2, 6, 9], [3, 7, 10], [4, 11], [12]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.