您好,我有 2 个不同的数组列表,它们都包含哈希图格式的数据(键值对)。现在我需要将这两个列表组合成一个列表,同时保持两个列表的顺序(因此两个列表中位置 [0] 的参考元素应该在新列表中保持一个到另一个)。我需要这个在列表视图中显示这些信息,但到目前为止,我只设法合并两者,但顺序不正确(第一个列表将占用新列表的前半部分,而第二个列表的引用将在之后)。希望可以有人帮帮我 :)
问问题
1821 次
2 回答
2
在这里,您有一个方法(可以重构以减少代码)
import java.util.ArrayList;
import java.util.HashMap;
public class Test {
public static void main (String[] args){
final ArrayList<HashMap<String, Integer>> listOne = new ArrayList<HashMap<String, Integer>>();
final ArrayList<HashMap<String, Integer>> listTwo = new ArrayList<HashMap<String, Integer>>();
// Test data for listOne
for (int i = 0; i< 10; i++) {
final HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put(String.valueOf(i), i);
listOne.add(map);
}
// Test data for listTwo
for (int i = 0; i< 20; i++) {
final HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put(String.valueOf(i), i);
listTwo.add(map);
}
// Determine the lower size
final ArrayList<HashMap<String, Integer>> finalList = new ArrayList<HashMap<String, Integer>>();
final int minSize = (listOne.size() <= listTwo.size()) ? listOne.size() : listTwo.size();
// Iterate the two list with the lower size
for (int i = 0; i<minSize; i++) {
finalList.add(listOne.get(i));
finalList.add(listTwo.get(i));
}
// Add the remanent for the bigger list if needed
if (listOne.size() > minSize) {
for (int i = minSize; i<listOne.size(); i++) {
finalList.add(listOne.get(i));
}
} else if (listTwo.size() > minSize) {
for (int i = minSize; i<listTwo.size(); i++) {
finalList.add(listTwo.get(i));
}
}
System.out.println(finalList);
}
}
于 2014-03-09T17:29:22.673 回答
0
试试这个我认为这可以解决你的问题
list2.add(list1);
于 2014-03-09T17:37:07.450 回答