Set是collection的子接口,对应数学中的集合。与list的最主要的区别是,set无法通过索引取值,因为set是无序的。set还有一个特性是唯一性,不能存相同的元素。
第一个实现类是hashset,看源码发现hashset底层实现就是一个hashmap,所以hashset查重基本是O1的。hashset存元素是把元素当做key存的,value部分是一个object对象。
第二种是linkedhashset,使用linkedhashmap实现的。实现遍历按照插入的方式。
第三种是treeset,遍历按照大小,底层按照treemap实现。
所以单线程的set实现类基本上都是以对应的map类实现的。是map类的简化版。