hashSet输出的特点就是没有固定的顺序,在类的最下面打印equal()and HashCode()目的是为了防止对象中输出时出现重复的值,
hashSet 和hashMap的区别:
1,HashSet和HashMap都是Collection的一部分,他们能让我们使用对象的集合,collection有自己的实现和接口,分别是list,set和Queue接口,Set集合不允许有对象重复的值,list允许有重复的值,他对集合中的对象进行索引。
什么是HashSet?
1,HashSet实现了Set接口,他不允许集合中有重复的值,当我们提到HashSet之前,要先确保对象重写equal()和hashCode()方法,这样才能比较对象的值是否相等以确保set中没有存储相等的对象。如果我们没有重写这两个方法的默认实现。
public boolean add(Object o)方法用来在Set中添加元素,当元素有重复时则会立即返回false,如或添加成功会返回true。
什么是HsahMap?
HashMap实现了Map接口,Map接口对键值进行映射。map中不允许有重复的键。Map接口有两个基本的实现,时HashMap和TreeMap。TreeMap保存了对象的排列次序,而HashMap不能。HashMap允许键和值为null。
HashMap时非synchronized的,但是collection框架提供方法能保证HashMap synchronized,这样多线程同时访问HashMap时,能保证只有一个线程更改Map。
public Object put(Object Key ,Object value) 方法用来将元素添加到map中。
*HashMap* HashSet
HashMap实现了Map接口 HashSet实现了Set接口
HashMap存储键值对 HashSet仅仅存储对象
使用put()方法将元素放入 使用add()方法将元素放入set种
Map中
HashMap中使用键对象来计算 HashSet使用成员对象来计算hashcode值, 对于两个对象来说hashcode可能相同,所以
hashCode值 用eqaus()方法来判断对象的想等性,如果
两个对象不同的话,那么返回false
HashMap比较快,因为使用唯一
的键来获取对象 HashSet较HashMap来说比较慢
hs.add("ai");//return map.put(e, PRESENT)==null;返回的只能是布林值
|
|