java集合去重处理

这里分享下我做过的集合去重处理!顾名思义就是把一个集合处理了,然后得到一个新的集合,这个集合里面的元素是没有重复的!下面就是贴出的代码啦!

public class UniqueListUtils<T> {
	public static <T> List<T> removeDuplicateWithList(List<T> list) {
		Set<T> set = new HashSet<T>();
		List<T> newList = new ArrayList<T>();
		for (Iterator<T> iter = list.iterator(); iter.hasNext();) {
			T element = iter.next();
			if (set.add(element))
				newList.add(element);
		} 
		return newList;
	}
}

 这里面的T就是传进去的任意对象类型拉,假如你要传入一个List<String>的集合,你的T就是String啦。当然这个方法你只需要调用就行了,随便传入一个已知的list集合进去就行啦!

这里面主要用到的就是hashSet里面的算法啦,hashSet自带了一个add方法,返回的是一个boolean值,他会自动根据hashcode来判断是否有相同值啦!这种方法比自己做if判断来得效率要高很多的!

再说说这种方法的劣势吧,这种方式去重并不是特别好,当然这种写法是一种给菜鸟的思路啦,java自带jdk里面有很好的实现方法,不过我们这些菜鸟很多都是不知道的!

这里引用下一楼大神的方法,他提供的就是原本jdk自带实现的方法,当然有兴趣的同学可以去看看jdk源码是怎么处理集合去重的!在这里感谢"酷的飞上天空"这位大神,让我又学到东西啦,多谢啦!有更好的算法或者实现的朋友么可以在下面讨论下哦,菜鸟们会很感激的啦!在此多谢啦!

[quote="酷的飞上天空"]List<String> list
// 去重
list =  new ArrayList<String>(new HashSet<String>(list));

[/quote]

希望能帮到你!

最后我修改了下"酷的飞上天空"的写法再贴上来,需要的可以看看哈!

public static <T> List<T> removeDuplicateByHashSet(List<T> list){
          List<T> newlist = new ArrayList<T>(new HashSet<T>(list));
          return newlist;
}
 

 

 下面是hashset源码处理,贴出来看下 哈

public HashSet(Collection<? extends E> c) {
        map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
        addAll(c);
    }

 反正我现在的积累是看不太懂的!哭

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值