ZKX's LAB

set重复数据 Java数组中重复数据的删除

2021-04-26知识3

关于List集合中用Set排除重复数据。 直接这样就行了,上面的图片是代码及输出结果,其中s2和s4是重复的,但是输出的结果中没有重复值public static void main(String[]args){Set myList=new HashSet();String s1=\"aa;String s2=\"bb;String s3=\"cc;String s4=\"bb;myList.add(s1);myList.add(s2);myList.add(s3);myList.add(s4);List myNeedList=new ArrayList(myList);System.out.println(myNeedList);}

set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals set里的元素是不能重复的,用iterator()方法来区分重复与否。set里的元素是不能重复的,用iterator()方法来区分重复与否。equals 方法(是String类从它的超类Object中继承。

Set集合,放的元素不能重复,请问它的判断重不重复是怎么实现的? 你好,首先要明白一点:加入Set里面的元素必须定义equals()方法以确保对象的唯一性。第一个问题:TreeSet的底层实现是采用红-黑树的数据结构,采用这种结构可以从Set中获取有序的序列,但是前提条件是:元素必须实现Comparable接口,该接口中只用一个方法,就是compareTo()方法。当往Set中插入一个新的元素的时候,首先会遍历Set中已经存在的元素(当然不是采用顺序遍历,具体采用什么方法,建议自己去看看源码),并调用compareTo()方法,根据返回的结果,决定插入位置。进而也就保证了元素的顺序。第二个问题:上面已经说过,加入Set里面的元素必须定义自己的equals()方法,但是对于良好的设计风格,最好在覆盖equals()方法的同时,也覆盖hashCode()方法,当然,对于TreeSet而言不用覆盖hashCode()方法也可。请记住:覆盖hashCode()方法的目的,只有一个原因就是提高效率。在往Set中插入新的对象时,首先会用该对象的hashCode()与已经存在对象的hashCode()做比较,如果相等,那就不能插入,如果不等,才会调用equals()方法,如果equals结果为true,说7a686964616fe78988e69d8331333264653963明已经存在,就不能再插入,如果为false,可以插入。注:如果没有覆盖。

#set可以有重复元素吗#set重复数据#set存放不重复随机数#set集合不重复随机数#set如何保证数据不重复

随机阅读

qrcode
访问手机版