type
status
date
slug
summary
tags
category
icon
password
Property
Map
用于存储key-value的映射,对于充当key的对象,是不能重复的,并且,不但需要正确覆写equals()
方法,还要正确覆写hashCode()
方法。如果只需要存储不重复的key,并不需要存储映射的value,那么就可以使用
Set
Set
用于存储不重复的元素集合,它主要提供以下几个方法:- 将元素添加进
Set<E>
:boolean add(E e)
- 将元素从
Set<E>
删除:boolean remove(Object e)
- 判断是否包含元素:
boolean contains(Object e)
Set
实际上相当于只存储key、不存储value的Map
。因为放入
Set
的元素和Map
的key类似,都要正确实现equals()
和hashCode()
方法,否则该元素无法正确地放入Set
。最常用的
Set
实现类是HashSet
,实际上,HashSet
仅仅是对HashMap
的一个简单封装,它的核心代码如下:Set
接口并不保证有序,而SortedSet
接口则保证元素是有序的:HashSet
是无序的,因为它实现了Set
接口,并没有实现SortedSet
接口;
TreeSet
是有序的,因为它实现了SortedSet
接口。
输出的顺序既不是添加的顺序,也不是
String
排序的顺序,在不同版本的JDK中,这个顺序也可能是不同的。把
HashSet
换成TreeSet
,在遍历TreeSet
时,输出就是有序的,这个顺序是元素的排序顺序:使用
TreeSet
和使用TreeMap
的要求一样,添加的元素必须正确实现Comparable
接口,如果没有实现Comparable
接口,那么创建TreeSet
时必须传入一个Comparator
对象。