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());
	}
	
	

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值