集合:用于存储对象的容器。集合中可以存储任意类型的对象,长度可变。

集合和数组的比较

  1. 集合和数组都是存储对象的容器,不同的是,数组可以存储基本数据类型(int、short、long、char、Boolean、double、float、byte),集合只能存储任意类型的对象。
  2. 数组长度是固定的,集合的长度是可变的(根据加载因子和扩容增量来完成扩容)。

数组操作复杂,在java中可用方法少,集合操作简单,有很多操作方法。

对于集合,顶层都实现了Iterable接口,表明集合都是可迭代的,可以视同iterable()方法获取集合对于的迭代器,也可以使用增强的for循环进行迭代。

1、Collection:collection为所以集合的定级接口,继承了Iterable类,表明所有集合类都是可迭代的。

2、List: 实现了Collection接口,存储的数据是有序的、可重复的,可通过索引进行元素访问。

3、ArrayList:底层实现为数组,线程不安全,查找效率高,增删效率低。

4、Vector:由下图可知vector和ArrayList实现原理相同,但是vector是线程安全的(synchronized),效率略低于ArrayList。

5、Stack:继承Vector,是一个先进后出的栈。

6、LinkedList:底层实现为双向链表,进行元素的增删效率高,查询效率低。

7、Queue:队列,先进先出(FIFO)

8、Set:存储的元素是无序的、唯一的。在程序运行中,如果使用add添加一个已经存在的元素,将返回false。

9、HashSet:底层实现为哈希表(链表+数组),线程不安全,查找效率高,增删效率低,通过元素的hashCode和equels方法保证了元素的唯一性。

上图为HashSet底层实现模式哈希表(数组+链表),当一条链上元素超过8个以上后,会自动转换为红黑树来存储元素,提高查询效率。

11、TreeSet:底层实现为二叉树,线程不安全,可对元素进行自动排序,保证元素唯一性的方式是compareTo方法返回0。

12、LinkedHashSet:底层实现为链表和哈希表,线程不安全,存储的元素时有序的、唯一的,通过元素的hashCode和equels方法保证了元素的唯一性。

Arrays:类Arrays为集合的工具类,可使用该类的方法对集合进行排序、转换为list等操作。

Collections:为所有直接或间接实现了Collection接口的集合类的工具类,该类封装了对集合的各种操作,如排序、反转、替换等操作。

java collection集合的更多相关文章

  1. ------------------java collection 集合学习 ----小白学习笔记,,有错,请指出谢谢

    <!doctype html>java对象集合学习记录 figure:first-child { margin-top: -20px; } #write ol, #write ul { p ...

  2. JAVA collection集合之 扑克牌游戏

    主要内容:这里使用collection集合,模拟香港电影中大佬们玩的扑克牌游戏. 1.游戏规则:两个玩家每人手中发两张牌,进行比较.比较每个玩家手中牌最大的点数,大小由A-2,点数大者获胜.如果点数相 ...

  3. Java Collection集合方法

    一.简单方法 package cn.itcast.day15; import java.util.ArrayList; import java.util.Arrays; import java.uti ...

  4. Java Collection集合中的iterator方法

    Iterator接口的概述 /** * java.util.Iterator接口:选代器(对集合进行遍历) * 有两个常用的方法 * boolean hasNext() * 如果仍有元素可以迭代,则返 ...

  5. Java Collection集合概述及其常用方法

    Collection集合概述 Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合 与数组不同的是,集合中不能存放基本类型数据,而只能存放对象的 ...

  6. Java——Collection集合、迭代器、泛型

    集合 ——集合就是java提供的一种容器,可以用来存储多个数据. 集合和数组的区别 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. 集合存储的都是对象 ...

  7. Java——Collection集合

    ##Collection集合 1.Collection集合是单列集合 2.Collection是所有单列集合最顶层的接口,定义了所有单列集合的共性方法 任意的单列集合都可以使用Collection接口 ...

  8. Java Collection集合接口

    Collection接口是赖以集合框架建立的基础.它声明的所有集合的核心方法.这些方法概括于下表中. 因为所有集合都要实现Collection,熟悉它的方法是对框架有清晰的认识很有必要.这几种方法都可 ...

  9. Java Collection开发技巧

    Java Collection(集合) 集合中的一些技巧: 通过Collections类的静态方法,可以对集合进行一些操作 1 java.util.List<Integer> number ...

随机推荐

  1. File.Exists 文件不存在 Or FileNotFoundException

    标题警告,本文仅限走投无路,最终可能的一个问题导致. 最开始出现在找不到文件,测试发现: 看起来毫无毛病 而后各种测试: 注意看,第一行跟第三行一模一样 发现[@"‪‪‪]这两个字符有毒,如 ...

  2. js函数中获得当前被点击元素

    问题描述:在html页面中点击<a>或者’按钮‘,进入js中的函数,在js函数中获得被点击那个<a>或‘按钮’元素 解决方法:方法一: html中: <a>标签:& ...

  3. COGS 2098. Asm.Def的病毒

    ★☆   输入文件:asm_virus.in   输出文件:asm_virus.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “这就是我们最新研制的,世界上第一种可持 ...

  4. (转)使用Spring注解方式管理事务与传播行为详解

    http://blog.csdn.net/yerenyuan_pku/article/details/52885041 使用Spring注解方式管理事务 前面讲解了怎么使用@Transactional ...

  5. Android主题更换换肤

    知识总览android主题换肤通常借助LayoutInflater#setFactory实现换肤. 换肤步骤: 通过解析外部的apk压缩文件,创建自定义的Resource对象去访问apk压缩文件的资源 ...

  6. python实战教程之自动扫雷(自己存下来学习之用)

    3.python的第三方库win32api,win32gui,win32con,Pillow,numpy,opencv可通过 pip install --upgrade SomePackage 来进行 ...

  7. 在已有的mysql表中添加自增字段

    现有数据表xiami,建表的时候忘记添加自增字段,现需要添加自增字段 第一步:添加字段 alter table xiami add id int; 第二步:修改字段 alter tabel xiami ...

  8. Mysql 查询多个字段去重复

    今天需要统计信息,但是有过个重复的数据,需要去除,找了如下方法: SELECT *, COUNT(DISTINCT phone ) FROM apply_info GROUP BY phone

  9. ES5的数组方法

    参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array Array.prot ...

  10. js 对象细节

    原型和原型链 在对象自身身上找不到指定属性时,就会到这个对象的原型__proto__上找,原型也是指向一个对象,在这个对象上还找不到对应属性,则继续到原型上来找...以上过程形成原型链. 访问对象的原 ...