示例代码:
public static void main(String[] args){。
List<Integer> list1 = new ArrayList<Integer>();。
list1.add(1);。
list1.add(2);。
list1.add(3);。
list1.add(4);。
List<Integer> list2 = new ArrayList<Integer>();。
list2.add(1);。
list2.add(4);。
list2.add(7);。
list2.add(10);。
List<Integer> listAll = new ArrayList<Integer>();。
listAll.addAll(list1);。
listAll.addAll(list2);。
listAll = new ArrayList<Integer>(new LinkedHashSet<>(listAll));。
System.out.println(listAll);。
}
输出:
[1, 2, 3, 4, 7, 10]。
代码要典:
合并 使用java.util.List.addAll(Collection<? extends Integer>)。
去重,借助LinkedHashSet 。
public static void main(String args[]){。
/**
* 大体思路:
* 1.把list2添加到list1中;添加时,先循环list2,用list2中的每个值,分别和。
* list1去比较,如果重复,跳出循环,则不添加,如果不重复,则list2的值添加到list1中。
*/
List<Integer> list2=new ArrayList<Integer>(); 。
list2.add(1); 。
list2.add(2); 。
list2.add(4); 。
List<Integer> list1=new ArrayList<Integer>(); 。
list1.add(1); 。
list1.add(2); 。
list1.add(5); 。
temp = 0;//重复标识 0-该值在list1中唯一;1-该值在list1中有重复值。
for(int i=0 ;i < list2.size();i++){。
for(int j=0; j< list1.size(); j++){。
if (list2.get(i) == list1.get(j)){。
temp = 1;。
}
}
if(temp = 0){。
list1.add(list2.get(i));。
}
}
System.out.println(list1.size());。
后记:list1本身也需要去重,方法一样,自己去一下吧。
1、运算符:
list1 = [1, 2, 3]。
list2 = [4, 5, 6]。
list3 = list1 + list2。
print(list3)
2、extend()方法:
list1 = [1, 2, 3]。
list2 = [4, 5, 6]。
list3 = list1.extend(list2)。
print(list3)
3、切片方式:
list1 = [1, 2, 3]。
list2 = [4, 5, 6]。
list1[len(list1):len(list1)] = list2。
print(list1)
扩展资料:
list的方法
L.append(var) #追加元素。
L.insert(index,var)。
L.pop(var) #返回最后一个元素,并从list中删除之。
L.remove(var) #删除第一次出现的该元素。
L.count(var) #该元素在列表中出现的个数。
L.index(var) #该元素的位置,无则抛异常。
L.extend(list) #追加list,即合并list到L上。
L.sort() #排序。
L.reverse() #倒序。
list 操作符:,+,*,关键字del。
a[1:] #片段操作符,用于子list的提取。
[1,2]+[3,4] #为[1,2,3,4]。同extend()。
[2]*4 #为[2,2,2,2]。
del L[1] #删除指定下标的元素。
del L[1:3] #删除指定下标范围的元素。
我这有种解法:
1、将list1和list2进行合并,在合并过程中去重。
2、用Collections.sort()进行排序就行了。代码如下:
List<Integer> list = new ArrayList<Integer>();。
for (Integer i : list2) {。
if (list.indexOf(i) == -1) {。
list.add(i);
for (Integer i : list1) {。
if (list.indexOf(i) == -1) {。
list.add(i);
Collections.sort(list);。
新定义一个类,这个类包含两个已有类成员以及共有的Id。然后,遍历原有List集合查找Id匹配对象。找到后,生成新定义类的实例并放入合并List集合。
举例如下(C#):
// 原有类1
public class Class1。
public int Id { get; set; }。
//其余代码略……
// 原有类2
public class Class2。
public int Id { get; set; }。
//其余代码略……
// 定义一个类,包含Class1和Class2实例引用。
public class Compound。
public int Id { get; set; }。
pubiic Class1 C1 { get; set; }。
pubiic Class2 C2 { get; set; } 。
合并两个不同类集合。合并操作使用了泛型列表List<T>和Linq。
using System.Collections.Generic;。
using System.Linq;。
// 原有类1列表集合
List<Class1> listClass1 = ……;。
// 原有类2列表集合
List<Class2> listClass2 = ……;。
// 合并
List<Compound> mergedList = new List<Compound>();。
// 遍历listClass1。
foreach(Class1 c1 listClass1)。
// 从listClass2中查找Id匹配的对象。
Class2 c2 = listClass2.Find(e=>e.Id == c1.Id);。
if(c2 != null)。
{
//在listClass2中找到匹配的对象,添加到合并集合mergedList中。
Compound x = new Compound(){Id=c1.Id, C1=c1, C2=c2};。
mergedList.Add(x); 。
}
// List<Compound> mergedList就是合并后的集合。
原文地址:http://www.qianchusai.com/%E4%B8%A4%E4%B8%AAlist%E5%8E%BB%E9%87%8D%E5%90%88%E5%B9%B6.html