资讯专栏INFORMATION COLUMN

HashSet & TreeSet小结

CollinPeng / 3250人阅读

摘要:存储元素实际为存储的键值对为的,为固定对象遍历方式支持正向反向迭代器遍历和遍历顺序迭代器实现顺序遍历实现逆序遍历反向迭代器实现

HashSet & TreeSet小结 声明

文章均为本人技术笔记,转载请注明出处:https://segmentfault.com/u/yzwall

HashSet小结 HashSet简介

HashSet是一个没有重复元素的集
HashSet可以存储null元素,不保证元素插入顺序;
HashSet线程不安全的(由于底层由HashMap实现);

HashSet底层实现

HashSet底层采用HashMap存储private transient HashMap map。HashSet存储元素实际为TreeMap存储的键值对为的key;,PRESENT为固定对象:private static final Object PRESENT = new Object();
由于HashMap中key不可重复,从而实现HashSet元素不可重复;

HashSet遍历方式

HashSet支持迭代器和foreach两种遍历方式:

// 遍历HashSet:迭代器实现
Iterator iter = set.iterator();
while (iter.hasNext()) {
    System.out.println(iter.next());
    
}

// 遍历HashSet:foreach实现
for (Integer i : set) {
    System.out.println(i);
}
TreeSet小结

TreeSet是一个有序集,基于TreeMap实现,是线程不安全的;

TreeSet有序性实现

TreeSet支持两种两种排序方式,通过不同构造器调用实现

自然排序:

    public TreeSet() {
        // 新建TreeMap,自然排序
        this(new TreeMap());
    }

Comparator排序:

    public TreeSet(Comparator comparator) {
        // 新建TreeMap,传入自定义比较器comparator
        this(new TreeMap<>(comparator));
    }
TreeSet底层实现

TreeSet底层采用TreeMap存储,构造器启动时新建TreeMap。TreeSet存储元素实际为TreeMap存储的键值对为的key;,PRESENT为固定对象:private static final Object PRESENT = new Object()

TreeSet遍历方式

TreeSet支持正向/反向迭代器遍历和foreach遍历

// 顺序TreeSet:迭代器实现
Iterator iter = set.iterator();
while (iter.hasNext()) {
    System.out.println(iter.next());
    
}

// 顺序遍历TreeSet:foreach实现
for (Integer i : set) {
    System.out.println(i);
}

// 逆序遍历TreeSet:反向迭代器实现
Iterator iter1 = set.descendingIterator();
while (iter1.hasNext()) {
    System.out.println(iter1.next());
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67007.html

相关文章

  • java 编程思想 - Chapter11&amp;Chapter17- 不同容器之间的比较

    摘要:中所有方法都是直接或者间接同步的,所以是线程安全的即多个线程操作同一个对象时是线程安全的,但是只有一个线程操作时考虑到同步控制会耗费系统资源所以效率低。中的所有方法都是线程非同步的,但有多个线程操作时是不安全的。 虽是读书笔记,但是如转载请注明出处http://segmentfault.com/blog/exploring/ ..拒绝伸手复制党 容器之间的区别通常归结为:由什么在背...

    imtianx 评论0 收藏0
  • Java编程基础19——Map集合&amp;斗地主案例

    摘要:使用默认随机源对指定列表进行置换。将集合排序使用二分搜索法搜索指定列表,以获得指定对象根据元素的自然顺序,返回给定的最大元素。 1_Map集合概述和特点 A:Map接口概述 查看API可以知道: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接口的不同 Map是双列的,Collection是单列的 Map...

    ygyooo 评论0 收藏0
  • List&amp;Map&amp;Set的操作和遍历

    摘要:的操作和遍历的三大集合即。的实现类原理比较简单,比较复杂,而其实是基于的一种实现。 List&Map&Set的操作和遍历 Java的三大集合即:Set、List、Map。 Set:代表无序、不可重复的集合,常用的有HashSet(哈希表实现)、TreeSet(红黑树实现); List:代表有序、可以重复的集合,比较常用的有ArrayList(数组实现)、LinkedList(链表实现...

    lavnFan 评论0 收藏0
  • java集合-Set

    摘要:集合判断两个元素的标准是两个对象通过方法比较相等,并且两个对象的方法返回值也相等。的集合元素也是有序的,以枚举值在类内的定义顺序来决定集合元素的顺序。是所有实现类中性能最好的,但它只能保存同一个枚举类的枚举值作为集合元素。 Set集合通常不能记住元素的添加顺序。Set不允许包含重复的元素。 Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作...

    xavier 评论0 收藏0
  • java集合类

    摘要:集合类简介集合类包含在包下集合类存放的是对象的引用,而非对象本身。集合类型主要分为集,列表,映射。返回此有序集合中当前第一个最小的元素。集合中元素被访问的顺序取决于集合的类型。 Java集合类 1.简介: java集合类包含在java.util包下集合类存放的是对象的引用,而非对象本身。集合类型主要分为Set(集),List(列表),Map(映射)。 1.1 java集合类图 sho...

    Pluser 评论0 收藏0

发表评论

0条评论

CollinPeng

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<