• 各接口及类关系图

  • Iterable

    • 所有集合的初始接口,实现该接口可进行foreach操作,只有一个iterator()方法,并返回iterator类型;
    • Iterable在java.lang下,Iterator在java.util下,Iterator主要包括hasNext(), next(), remove();
    • 所有实现了Iterable就可以操作迭代器iterator, 但能使用迭代器iterator就未必实现了Iterable接口,如数组?
    • 为什么需要Iterable? 因为Iterator中的next(), hasNext()依赖于当前迭代器中迭代的位置(指针),如果Collection直接实现Iterator会使迭代位置不可知,需要增加reset重置当前迭代,但也只能存在一个当前迭代;而Iterable每次可从头开始计数,而且多个迭代互不影响。
  • Collection
    • 一个基本集合接口,包含一组Object元素;
    • 在java.util下,同时Collections是一个工具类,包含对集合各类操作的静态方法,比如sort;
    • Collection下有三个子接口:List, Set, Queue
  • List
    • 有序(保持插入数据时的顺序)、可重复的集合;
    • 子类ArrayList是基于数组实现的,但size动态可变化的;
    • 子类LinkedList实现 List<E>, Deque<E>, Cloneable, Serializable,双向链表接口;可作为双向Queue使用,也可以当做Stack使用;
    • ArrayList查询效率高于LinkedList, 因为访问LinkedList中的元素,需要每次从头指针开始移动,而ArrayList可直接通过数组下标的方式获取;但如果LinkedList通过Iterator, 则效率与ArrayList不会相差多少,因为Iterator方式遍历会缓存前后节点;
    • ArrayList插入和删除的效率会比LinkedList低,因为ArrayList每次插入或删除元素时,该元素的后续下标位置也要做相应的调整。
    • JDK1.2以后,Vector也是通过List接口实现的,Vector是线程安全的,ArrayList是非线程安全;
    • Stack是Vector子类,其主要特征是先进后出(FILO, First In Last Out)。
  • Set
    • Set集合里的元素没有顺序,但不能包含重复元素;
    • HashSet使用HASH算法存储元素,所以存储和查找效率较高,比如查找时只要根据这个元素的hashcode就可找到其存储的位置。
    • HashSet判断元素相等(去重)是根据equals判断两个元素的hashcode值。
    • LinkedHashSet是HashSet的子类,唯一区别是,多一个链表结构维护其插入元素的顺序。
    • TreeSet与HashSet都继承于AbstractSet, 但TreeSet使元素保持某种排序状态,所以TreeSet继承与SortedSet。
  • Map
    • 当把HashMap中的value都看成null时,可视为Set,其key的存储形式与Set一致;
    • TreeMap维护key以某种排序方式;
    • WeakHashMap在其Key对象被GC回收时,其key-value也自动销毁,因此称其key为弱引用;但HashMap中的Key为强引用,只要该HashMap不被回收,其Key所引用的对象也不会被回收。
    • IdentityHashMap中,只有key1==key2时,才认为这两个key相等,而HashMap是根据equals判断;

JAVA集合接口及类的更多相关文章

  1. java 集合接口及类

  2. Java集合——Collections工具类

    Java集合——Collections工具类 摘要:本文主要学习了Collections工具类的常用方法. 概述 Collections工具类主要用来操作集合类,比如List和Set. 常用操作 排序 ...

  3. java集合框架——工具类

    一.概述 JAVA集合框架中有两个很重要的工具类,一个是Collections,另一个是Arrays.分别封装了对集合的操作方法和对数组的操作方法,这些操作方法使得程序员的开发更加高效. public ...

  4. Java集合----Collection工具类

    Collections 工具类 Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了 ...

  5. java 集合Collections 工具类:排序,查找替换。Set、List、Map 的of方法创建不可变集合

    Collections 工具类 Java 提供1个操作 Set List Map 等集合的工具类 Collections ,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了将集合 ...

  6. JAVA面向对象-----接口与类、接口之间的关系

    接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...

  7. Java 私有接口 【类中嵌套接口】

    1.前言 接口十分常用,能规范实现类的命名 和 实现多个实现类的向上转型成统一类型 ,但是接口的修饰符只能是 public吗? 当然不是,可以是private , 难道是像这样? 显然不可以,已经报错 ...

  8. Java集合中那些类是线程安全的

    线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多 ...

  9. java 集合之实现类ArrayList 和 LinkedList

    List 的方法列表 方法名 功能说明 ArrayList() 构造方法,用于创建一个空的数组列表 add(E e) 将指定的元素添加到此列表的尾部 get(int index) 返回此列表中指定位置 ...

随机推荐

  1. C#异步编程基础入门总结

    1.前言 *.NET Framework提供了执行异步操作的三种模式: 异步编程模型(APM)模式(也称为IAsyncResult的模式),其中异步操作要求Begin和End方法(例如,BeginWr ...

  2. 1001 害死人不偿命的(3n+1)猜想 (15 分)

    卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 ...

  3. codeforces #305 E Mike and friends

    原问题可以转化为:给定第k个字符串,求它在L-R的字符串里作为子串出现了多少次 定义子串为字符串的某个前缀的某个后缀(废话) 等价于我们把一个字符串插入到trie里,其过程中每个经过的节点和其向上的f ...

  4. Flutter之MaterialApp使用详解

    来自: https://cloud.tencent.com/developer/article/1337184 字段 类型 navigatorKey(导航键) GlobalKey<Navigat ...

  5. window安装ab压力测试并使用

    ab是Apache HTTP server benchmarking tool的缩写,可以用以测试HTTP请求的服务器性能,也是业界比较流行和简单易用的一种压力测试工具包 1.下载ab工具 进入apa ...

  6. JavaScript自定义求和函数

    我爱撸码,撸码使我感到快乐!大家好,我是Counter,当看到这个标题到时候是不是感觉很简单,千万不要大意哦,你说0.1 + 0.2 = 0.3 ?有时候计算机并不是我们所说绝对精确,这个时候就要我们 ...

  7. Learning-Python【33】:并发编程之多进程

    一.multiprocessing 模块介绍 Python 中的多线程无法利用多核优势,如果想要充分地使用多核 CPU 的资源(os.cpu_count()查看),在 Python 中大部分情况需要使 ...

  8. 没有显示器、网线、路由器,编辑TF卡连接树莓派

    只有电脑,连接树莓派的方法 电脑新建热点 打开TF卡,在根目录新建文件wpa_supplicant.conf,内容如下 country=GB ctrl_interface=DIR=/var/run/w ...

  9. 《温故而知新》JAVA基础七

    抽象类 定义:抽象类前面使用abstract关键字修饰(只用语被继承) 应用场景: 在父类中写一些子类中即将实现的方法,具体的实现在子类中写,也可以将多种特征相同的类抽离出来 使用规则 abstrac ...

  10. PotPlayer安装与配置

    目录 1.简介 2.安装 3.设置 基本选项设置: 播放选项设置: PotPlayer皮肤设置: 1.简介 PotPlayer一款小巧简单的视频播放软件,具有于强大的定制能力和个性化功能. 2.安装 ...