java 两个list交叉合并代码
时间: 2023-10-08 16:04:44 浏览: 85
可以使用以下代码来实现两个List的交叉合并:
```
public static List<Object> mergeTwoLists(List<Object> list1, List<Object> list2) {
List<Object> mergedList = new ArrayList<>();
int list1Size = list1.size();
int list2Size = list2.size();
int size = Math.max(list1Size, list2Size);
for (int i = 0; i < size; i++) {
if (i < list1Size) {
mergedList.add(list1.get(i));
}
if (i < list2Size) {
mergedList.add(list2.get(i));
}
}
return mergedList;
}
```
注意:该代码仅供参考,具体实现可能需要根据具体需求进行调整。
相关问题
Java 两个list交叉合并
Java 中可以使用 for 循环和 get() 方法来实现两个列表的交叉合并。具体实现如下:
```
List<Integer> list1 = Arrays.asList(1, 3, 5);
List<Integer> list2 = Arrays.asList(2, 4, 6);
List<Integer> mergedList = new ArrayList<Integer>();
for (int i = 0; i < list1.size(); i++) {
mergedList.add(list1.get(i));
mergedList.add(list2.get(i));
}
System.out.println(mergedList);
```
输出结果为:
```
[1, 2, 3, 4, 5, 6]
```
如果你想要将交叉合并后的列表拆分为两个列表,可以使用 subList() 方法来实现:
```
List<Integer> mergedList = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> list1 = mergedList.subList(0, mergedList.size() / 2);
List<Integer> list2 = mergedList.subList(mergedList.size() / 2, mergedList.size());
System.out.println(list1); // 输出 [1, 2, 3]
System.out.println(list2); // 输出 [4, 5, 6]
```
注意,上述方法只适用于两个列表长度相等的情况。如果两个列表长度不等,可以在循环中添加判断条件来处理。
Java 两个不同长度list交叉合并
可以使用双指针的方法来实现两个不同长度的列表的交叉合并。具体步骤如下:
1. 定义两个指针i和j,分别指向两个列表的起始位置。
2. 创建一个新的空列表,用于存储合并后的结果。
3. 循环遍历两个列表,比较当前位置的元素大小,将较小的元素添加到新列表中,并将指针向后移动一位。
4. 如果其中一个列表已经遍历完了,将另一个列表的剩余元素全部添加到新列表的末尾。
下面是Java代码的实现示例:
```java
public static List<Integer> mergeLists(List<Integer> list1, List<Integer> list2) {
List<Integer> merged = new ArrayList<>();
int i = 0, j = 0;
while (i < list1.size() && j < list2.size()) {
if (list1.get(i) < list2.get(j)) {
merged.add(list1.get(i));
i++;
} else {
merged.add(list2.get(j));
j++;
}
}
while (i < list1.size()) {
merged.add(list1.get(i));
i++;
}
while (j < list2.size()) {
merged.add(list2.get(j));
j++;
}
return merged;
}
```
这个方法的时间复杂度是O(m+n),其中m和n分别是两个列表的长度。
阅读全文