龙空技术网

java数据去重

解影视 567

前言:

眼前我们对“java怎么返回数据”大致比较珍视,同学们都需要学习一些“java怎么返回数据”的相关文章。那么小编同时在网摘上网罗了一些对于“java怎么返回数据””的相关内容,希望你们能喜欢,姐妹们快快来学习一下吧!

数据去重除了对list循环之外一般会借助Set不包含重复数据特性来达到去重目的。

1、HashSet & LinkedHashSet

重写对象的hashCode和equals,优先判断hashCode返回值是否一样,一样再判断equals。HashSet无序(基于哈希表实现),LinkedHashSet有序(数据添加时的顺序),LinkedHash继承HashSet,均为非同步集合

2、TreeSet

数据实现Comparable接口,根据compareTo返回值判断数据是否重复,基于红黑树实现,有序(使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法),非同步集合,比较有用的api如下:

higher(E e)

返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回 null。

lower(E e)

返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null。

floor(E e)

返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null。

E ceiling(E e)

返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null。

去重写法一般如下,contactSet.addAll之后的集合即为无重复数据集合,去重是以ContactInfoBean对象的getPhone返回值作为去重依据:

Set contactSet = new TreeSet<>(Comparator.comparing(ContactInfoBean::getPhone));

contactSet.addAll(contactItems);

3、Java8新特性stream进行去重

用steam的distinct()方法返回一个由不同数据组成的流,通过对象的equals()方法进行比较。

List data = new ArrayList();

List listWithoutDuplicates = data.stream().distinct().collect(Collectors.toList());

标签: #java怎么返回数据 #java函数怎么返回一个数值的数据 #java数据去重