-----------------------java的set集合和子类HashSet----------------
set特点:
1.无序性
2.不能重复
3.允许有null但是只能有一个
--------------------hashSet------------------
此类实现Set接口,由哈希表(实际上是一个HashMap实列)支持。它不保证set的迭代顺序,特别是它不保证该顺序
恒久不变。此类允许使用null元素。
HashSet的唯一性:
在HashSet做添加的时候会逐个来判断当前集合中的对象和要添加的对象的比较
通过以下的条件判断两个对象是否相等
l e.hash == hash&&((k == e.hash) == key || key.equals(k))
l hash值必须相等并且两个对象的地址值相等或者equals返回ture
List集合是有序的,可以存储null和相同的元素。
一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2)
的元素对 e1
和 e2
,并且最多包含一个 null 元素。
Set里面的方法绝大多数都是继承于collection,所以set基本学完。
Set的特点:
元素不可重复性
元素无序的(跟添加的顺序无关)
-------------- Set的重复性---------------
Set在添加元素的时候会拿这个元素和集合中的每一个元素做比较,如果重复了就不添加,
如果没有重复就添加。
判断两个对象是否相等必须重写equals和hashCde方法,
这两个方法都符合相等的条件,才认为是相等的。
例子:
/**
* set特点:
* 1.无序性
* 2.不能重复
* 3.允许有null但是只能有一个
* @作者 李昆鹏
*
*/
public class SetDemo {
public static void main(String[] args) {
//创建一个Set集合
Set<String>set = new HashSet<String>();
set.add("曹操");
set.add("刘备");
set.add("孙权");