关于list去重的几种方法

众所周知,java的list集合中可以添加相同的元素。那么,当存放了相同元素的时候,如何去重呢?

以下是三种方法:

    public static List<String> distinct(List<String> list) {
		List<String> list2 = new ArrayList<String>();//新建一个list用于返回
		for(int i=0;i<list.size();i++) {//遍历原list
			String e = list.get(i);
			if(!list2.contains(e)) {//如果新列表不含原第i个元素
				list2.add(e);//就把它添加到新列表
			}
		}
		return  list2;
	}
    public static List<String> distinct2(List<String> list) {		
		for(int i=0;i<list.size();i++) {//逐个比较每两个	
			for(int j=i+1;j<list.size();j++) {
				if(list.get(i).equals(list.get(j))) {
					list.remove(j);					
					j--;//每次移除完,后面的元素往前顶,而光标继续往后了
				}
			}
		}
		return  list;
	}
    public static List<String> distinct3(List<String> list) {//利用set不能存放相同的元素		
		Set<String> s = new HashSet<String>();
		s.addAll(list);//set在加入元素的时候,会舍去后加进来的但已存在的元素
		list.clear();
		list.addAll(s);
		return  list;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值