java中怎么往集合类set里添加数据??

java中怎么往集合类set里添加数据??,第1张

两种向Set中添加元素的方法,第一种是使用add()方法,每次添加一个元素到set中,当集合中不存在相同元素时将添加到集合中,并返回true,当集合中存在元素时,返回false。代码如下:

Set<String>sets = new HashSet<>()

sets.add("String")

System.out.println(sets.add("Tree"))

System.out.println(sets.add("String"))

List<String>lists = new LinkedList<>()

lists.add("test")

lists.add("test")

lists.add("one")

System.out.println(sets.addAll(lists))

还有一个是向集合中批量添加元素的方法addAll(),这个方法的入参是Colletion。上述代码执行结果如下:

扩展知识

Set集合可以知道某物是否已近存在于集合中,不会存储重复的元素,注重独一无二的性质,用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。可以很好地作为排重时使用的数据结构,但要注意集合内部数据一般情况没有顺序。常用的set有HashSet和TreeSet。

TreeSet是JAVA中集合的一种,TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSet抽象类,实现了NavigableSet<E>,Cloneable,java.io.Serializable接口。一种基于TreeMap的NavigableSet实现,支持2种排序方式:自然排序 或者 根据创建TreeSet 时提供的 Comparator 进行排序。

HashSet 比较两个对象是否相同的机制是 1.hash 2. == 3.equals()

第一步就是比较两个对象的hash值是否相同(注意这里的hash值是经过处理的,为了使散列更均匀)

hash值相同的就会散列到一组 不相同就会散列到不同的组(此时就不会再继续比较了,因为在不同组hashset认为他们就是不同的对象)

第二步 如果hash值相同 则进行连等判断 即比较内存地址是否相同 如果不相同那么hashset就认为他们肯定不是相同的对象 如果内存地址相等(这一步最主要的目的其实就是删除元素的时候判断)那么进行第三步

第三步 如果equals返回相同 那么他们就是彻彻底底的相同的对象 不能添加到set里,如果返回不同那么他们就不是彻底的不相同 就可以添加到一个set里

楼主明白了吧,纯手打,希望对你有帮助

是要重写的,不重写就是3个,因为他们的地址返回的哈希码都是不同的

重写的话,自己定义当名字和年龄都相同时候

他们的值就相同,另外,返回

的哈希码也相同;

public

int

hashCode(){

return

name.hashCode^((age<<25)+(age<<17)+(age<<9)+(age))^0xabf024

}

可以这样写,总这相同名字和年龄时候返回值相同

另外的,不同时候,让他们尽量分散,不重复。

equals

的重新就比较简单了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11404811.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存