Set接口概述
Set接口和list接口相似,都继承了Collection接口,而set接口中没有太多的新增方法,所以它的方法大多数和list差不多
Set接口特点
set容器的特点:无序的,不可重复,set容器中只能放一个null元素
set的常用类有HashSet、TreeSet等
Set底层实现
HashSet是采用哈希算法实现的,底层实际是使用HashMap实现的(HashSet其本质就是一个简化版的HashSet),因此,查询效率和增删效率都比较高
下面我们手动实现一个HashSet
package com.boker.Collection;
import java.util.HashMap;
//HashSet类
public class MyHashSet <E>{
HashMap map;
private static final Object PRESENT = new Object();
//构造器
public MyHashSet() {
map = new HashMap();
}
//集合大小
public int size() {
return map.size();
}
//添加数据
public void add(E element) {
map.put(element, PRESENT);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append('[');
for(Object key : map.keySet()) {
sb.append(key+",");
}
sb.setCharAt(sb.length()-1,']');
return sb.toString();
}
}
运行:
package com.boker.Collection;
public class TestMyHashSet {
public static void main(String[] args) {
MyHashSet<String> mh = new MyHashSet<>();
mh.add("a");
mh.add("b");
mh.add("c");
System.out.println(mh);
}
}
运行结果: