Set 的其他实现类:LinkedHashSet

LinkedHashSet 使用链表维护了一个添加进集合中的顺序,导致遍历时是以添加的顺序输出的(但不能说是“有序的”),如下:

  1. public class TestSet3 {
  2. public static void main(String[] args) {
  3. Set set = new LinkedHashSet();
  4. set.add("a");
  5. set.add(12);
  6. set.add(new Person1("cdf"));
  7. set.add(345);
  8. System.out.println(set);// [a, 12, Person1 [name=cdf], 345]
  9. }
  10. }

关于其还是无序的说法,参见下图:

LinkedHashSet 继承于 HashSet

由于链表的存在,LinkedHashSet 的插入性能略逊于 HashSet,但迭代访问时性能优秀,适合于频繁的遍历与较少的增删操作特点类似 Map 的其他实现类:LinkedHashMap 但是要注意跟“LinkedList 与 ArrayList 的区别”区别

时间: 2024-10-19 07:08:27

Set 的其他实现类:LinkedHashSet的相关文章

Java API —— Set接口 & HashSet类 & LinkedHashSet类

1.Set接口 1)Set接口概述 一个不包含重复元素的 collection,无序(存储顺序和取出顺序不一致),唯一.  (List有序,即存储顺序和取出顺序一致,可重复) 2)Set案例 存储字符串并遍历 存储自定义对象并遍历 2.HashSet 1)HashSet类概述 不保证 set 的迭代顺序:特别是它不保证该顺序恒久不变. 2)HashSet如何保证元素唯一性 底层数据结构是哈希表(元素是链表的数组) 哈希表依赖于哈希值存储 添加功能底层依赖两个方法: · int hashCode(

Java学习笔记_22_Set接口的实现类

22.Set接口的实现类: Set接口存放的元素是无序的且不包括反复元素. 1>实现类HashSet: HashSet类依据元素的哈希码进行存放,取出时也能够依据哈希码高速找到.HashSet不保存元素的加入的顺序. 样例: import java.util.HashSet; import java.util.Iterator; public class Student { public static void main(String[] args) { HashSet<String>

常用的类、文件操作

异常与异常处理 异常简介 在Java中,所有的异常都有一个共同的祖先Throwable(可抛出).Throwable指定代码中可用异常传播机制通过Java应用程序传输任何问题的共性. 处理异常机制 在 Java 应用程序中,异常处理机制为:抛出异常,捕捉异常. 抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息.运行时系统负责寻找处置异常的代码并执行. 捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理

Java集合 -- HashSet 与TreeSet和LinkedHashSet的区别

原文:https://www.cnblogs.com/wl0000-03/p/6019627.html Set接口  Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false. Set判断两个对象相同不是使用==运算符,而是根据equals方法.也就是说,只要两个对象用equals方法比较返回true,Set就不会接受这两个对象. HashSet与TreeSet都是基于Set接口的实现类.其中TreeSet是Set的子接口SortedSet的实现类.Set接口

Set接口中的HashSet,LinkedHashSet,TreeSet

TestSet package com.aff.coll; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; import org.junit.Test; /* Collection接口 |----Set接口:存储无序的,不可

计算机程序的思维逻辑 (49) - 剖析LinkedHashMap

之前我们介绍了Map接口的两个实现类HashMap和TreeMap,本节来介绍另一个实现类LinkedHashMap.它是HashMap的子类,但可以保持元素按插入或访问有序,这与TreeMap按键排序不同. 按插入有序容易理解,按访问有序是什么意思呢?这两个有序有什么用呢?内部是怎么实现的呢?本节就来探讨这些问题.从用法开始. 用法 基本概念 LinkedHashMap是HashMap的子类,但内部还有一个双向链表维护键值对的顺序,每个键值对既位于哈希表中,也位于这个双向链表中. Linked

Java 集合类图

有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet TreeSet 是(用二叉树排序) Map AbstractMap 否 使用key-value来映射和存储数据,Key必须惟一,value可以重复 HashMap TreeMap 是(用二叉树排序) 4.详细介绍 常用的类介绍 Collection:父接口:  Set:接口 ---实现类: HashSet.LinkedHashSet List:接口---实现类: Lin

黑马程序员——JAVA集合框架学习总结

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- www.itheima.com 要学好java的集合框架,必须掌握此图: Java集合框架很全面,从大的来说.它包括两种类型: 1.一种是以collection为根接口的集合. 2.另一种是由map为根接口的<key,value>的“图”. 而collection之下的set接口和list接口又有不同: 1.Set 接口继承 Collection,但不允许重复,使用自己内部的一个排列机制.

JAVA学习--集合Set使用

* Collection接口 :  *         |------List接口:  *             |------ArrayList(主要的实现类).  *             |------LinkedList(对于频繁的插入.删除操作).  *             |------Vector(古老的实现类.线程安全的,但效率要低于ArrayList)  *         |------Set接口:存储无序的,不可重复的元素.Set中常用的方法都是Collection

Thinking in java(集合)

http://blog.csdn.net/liulin_good/article/details/6213815 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet TreeSet 是(用二叉树排序) Map AbstractMap 否 使用key-value来映射和存储数据,Key必须惟一,value可以重复 HashMap TreeMap 是(用二叉树排序) 4.详细介绍 常用的类介绍 Collection:父接口: