List对象合拢
List对象合并
使用List,合并相同的对象,方便遍历
Set的功能方法
Set具有与Collection完全一样的接口,因此没有任何额外的功能,不像前面有两个不同的List。实际上Set就是Collection,只是行为不同。(这是继承与多态思想的典型应用:表现不同的行为。)Set不保存重复的元素(至于如何判断元素相同则较为负责)
Set : 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。
HashSet : 为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。
TreeSet : 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。
LinkedHashSet : 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。
package hb.util; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import org.junit.Test; public class ListUnit{ /** *两个list<Object>,合并,使用Set没有办法删除相同的 */ public static void main(String[]args){ List list = new LinkedList(); for(int i=0;i<5;i++){ Person p = new Person(); p.setName("name"+i); p.setId("id"+i); list.add(p); } List list2 = new LinkedList(); for(int i=0;i<5;i++){ Person p = new Person(); p.setName("name2"+i); p.setId("id2"+i); list2.add(p); } Person p = new Person(); p.setName("name"+2); p.setId("id"+2); list2.add(p); Set set = new HashSet(); set.addAll(list); set.addAll(list2); System.out.println(set.size()); } /** *两个list<String>字符串,合并,并且保留的值唯一,没有相同的 */ @Test public void stringListUnionDiff(){ List<String> list = new LinkedList<String>(); for(int i=0; i < 5; i++){ list.add("name"+i); } List<String> list2 = new LinkedList<String>(); for(int i=0; i < 5; i++){ list2.add("name"+i); } Set set = new HashSet(); set.addAll(list); set.addAll(list2); System.out.println(set.size()); } /** *两个list<String>字符串,合并,并且保留所有的值,可能存在相同的 */ @Test public void stringListUnionAll(){ List<String> list1 = new LinkedList<String>(); for(int i=0; i < 5; i++){ list1.add("name"+i); } List<String> list2 = new LinkedList<String>(); for(int i=0; i < 5; i++){ list2.add("name"+i); } List list = new LinkedList(); list.addAll(list1); list.addAll(list2); System.out.println(list.size()); } }