本次任务完成时间:2019年5月24日 开发工具与关键技术:MyEclipse 10、Java 作者:杨裙 一、HashSet 1、HashSet是Set集合里的一个实现类,当添加重复的元素时,则会添加操作失败,add()方法返回false,且新元素不会被加入。 2、当添加元素的时候,是没有顺序的,set集合通常是记不住元素的添加顺序的,HashSet集合可以保证元素的唯一性。集合元素值可以放入null,但只能放入一个null; 如下图: 3、HashSet不是同步的(不是线程安全的),如果多个线程同时访问一个HashSet,如果有两个或两个以上线程同时修改了HashSet集合时,则必须通过代码来保证其同步。HashSet内部数据结构是哈希表。 4、HashSet为了保证集合的元素唯一性,是通过对象的hashCode和equals方法来完成对象唯一性的。如果对象的hashCode的值不同,那么就不用判断equals方法,如果对象的hashCode值相同,那么要再次判断equals方法是否为true,如果返回的为true,那么就会视为相同的元素,不会储存,如果返回的为false,那么就视为不同元素,进行存储。 5、Set接口中的方法和Collection中的方法一致。Set接口取出的方式只有一种,迭代器。 6、HashSet的几个方法 • add(E e) :用来添加元素。 • clear() :从集合中移除元素。 • contains(object o):判断集合是否包含指定元素。 • isEmplty():判断集合中的元素是否为空。 • iterator():返回对此set中元素进行迭代的迭代器。 • remove():如果指定元素在集合中有存在,那么就将其移除。 • size():返回set中的元素的数量。 如下图: 7、因为HashSet是没有顺序的,所以不能用Comparable 和 Comparator的排序方法来进行排序。 8、需要注意的是,如果元素要存储到HashSet集合中,必须要覆盖HashCode方法和equals方法。这是建立对象判断是否相同的依据。