java集合常用类介绍

List接口:

一:ArrayList

private static final int DEFAULT_CAPACITY = 10;

private static final Object[] EMPTY_ELEMENTDATA = {};

private transient Object[] elementData;

private int size;

用数组来存储元素,也就是基于 Object[]来管理元素,等于数组的加强版,在add()方法时先调用ensureCapacityInternal()方法来扩展容量。

二:LinkedList:

LinkedList<E>     extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable

实现了Deque,Cloneable接口:说明可以复制和具有队列的功能

继承了AbstractSequentialList抽象类,而AbstractSequentialList继承了abstactlist抽象类

transient int size = 0;

transient Node<E> first;

transient Node<E> last;

具有两个属性: first,last,表示第一位和最后一位。

采用Node来表示表示每个元素。

Node是个内部静态类

private static class Node<E> {

E item;

Node<E> next;

Node<E> prev;

Node(Node<E> prev, E element, Node<E> next) {

this.item = element;

this.next = next;

this.prev = prev;

}

}

每个节点除了本身外,还有前后元素的引用,所有inkedList类是双向列表.

操作:

private void linkFirst(E e)

private linkLast(E e)

特点:通过链表可以实现快速的插入,但是获取元素比较慢

而Arraylist.get()比较快,set()比较慢

Set接口:

1:特点:

A collection that contains no duplicate elements.  More formally, sets  contain no pair of elements e1 and e2such that

e1.equals(e2), and at most one null element..

也就是说我们可以用Set接口来存储非空的,不重复发到元素。

常用的类:HashSet和TreeSet

1:HashSet:无序集合,支持null值,采用Hash算法存放元素。

HashSet<E>     extends AbstractSet<E> implements Set<E>, Cloneable

 private transient HashMap<E,Object> map:

特点:

1:采用HashMap的key来存储集合

2:非线程安全:为了提高效率没有使用synchronized,所以如果多线程操作一个HashSet的话,则必须使用外部锁。

3:获取元素要通过iterator()返回一个迭代器,因此具有fail-fast特性:fail-fast是指在对集合进行迭代的时候,如果某个线程对集合进行了修改,那么这个时候就产生了fail-fast错误。

TreeSet类:是一个有序集合,不支持null值,采用二叉树实现排序

TreeSet<E> extends AbstractSet<E>  implements NavigableSet<E>, Cloneable, java.io.Serializable

private transient NavigableMap<E,Object> m;

private static final Object PRESENT = new Object();

继承了 NavigableSet接口,采用NavigableMap来存储元素,其实就是TreeMap来存储元素,如果你对Treemap比较了解的话,对TreeSet也就没问题的

特性:

1:采用TreeMap的key来存放元素,

1:支持排序:final Comparator<? super K> comparator,有个Comparator排序实例,在put()的时候,会先调用compare()

2:非线程安全的,需要通过外部锁来保证线程安全。

总结:1:ArrayList适合于快速读取,修改操作比较少的集合。 2:LinkedList适合于修改操作比较多,读取比较少的集合。 3:HashSet适合于存储非空,不重复的无序集合元素,效率比较高。 4:TreeSet适合于存储非空,不重复的有序集合元素,效率比HashSet低。

java企业级通用权限安全框架源码 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5

【java框架源码下载】

时间: 2024-10-21 15:32:02

java集合常用类介绍的相关文章

转 java集合常用类 介绍

集合的结构如下图所示: 集合的两个顶级接口分别为:Collection和Map Collection下有两个比较常用的接口分别是List(列表)和Set(集),其中List可以存储重复元素,元素是有序的(存取顺序一致),可以通过List脚标来获取指定元素;而Set不可以有重复元素,元素是无序的. List接口中,比较常用的类有三个:ArrayList.Vactor.LinkedList. ArrayList :线程不安全的,对元素的查询速度快. Vector :线程安全的,多了一种取出元素的方式

Java集合常用类特点整理

集合的结构如下图所示: 集合的两个顶级接口分别为:Collection和Map Collection下有两个比较常用的接口分别是List(列表)和Set(集),其中List可以存储重复元素,元素是有序的(存取顺序一致),可以通过List脚标来获取指定元素;而Set不可以有重复元素,元素是无序的. List接口中,比较常用的类有三个:ArrayList.Vactor.LinkedList. ArrayList :线程不安全的,对元素的查询速度快. Vector :线程安全的,多了一种取出元素的方式

Java网络通信常用类介绍(Java.net包)

InetAddress类:表示互联网协议 (IP) 地址 URL类:代表一个统一资源定位符,它是指向互联网"资源"的指针. 资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询. URLConnection类:用于读取和写入此 URL 引用的资源. 使用步骤: 通过在 URL 上调用 openConnection 方法创建连接对象. 处理设置参数和一般请求属性. 使用 connect 方法建立到远程对象的实际连接. 远程对象变为可用.远程对象的头字段

C#文件读写常用类介绍

首先要熟悉.NET中处理文件和文件夹的操作.File类和Directory类是其中最主要的两个类.了解它们将对后面功能的实现提供很大的便利.      本节先对和文件系统相关的两个.NET类进行简要介绍.  System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法.  (1) 文件打开方法:File.Open () 该方法的声明如下: public static FileS

黑马程序员——Java集合工具类和泛型

Collections工具类和泛型 Collections和Collection Collections和Collection是不同的,Collections是工具类,用来操作集合的,而Collection是集合接口.Collections中有一系列的静态方法用来操作集合,但是不能更改集合内容.比如不能set()不能remove()元素,可以替换全部元素或者添加同一个元素. static List<String> list =Arrays .asList("one Two three

Java集合---Array类源码解析

Java集合---Array类源码解析              ---转自:牛奶.不加糖 一.Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序.其中主要分为Primitive(8种基本类型)和Object两大类. 基本类型:采用调优的快速排序: 对象类型:采用改进的归并排序. 1.对于基本类型源码分析如下(以int[]为例): Java对Primitive(int,float等原型数据)数组采用快速排序,对Object对象数组采用归并排序.对这一区别,sun在

Activiti常用类介绍

为什么要使用工作流? 传统的设计在流程发生变化时的弊端: 1. 流程相关的属性和业务对象的属性,都放到了业务对象中. 2. 流程相关的逻辑和业务逻辑,都放到的业务逻辑中 常用类 ProcessEngineConfiguration 流程引擎配置对象(配置数据库连接信息和建表策略) ProcessEngine 流程引擎的核心对象(检查环境是否正确,管理各种服务) RepositoryService 仓库服务对象(管理部署信息) RuntimeService 运行时服务对象(管理流程的启动,流转等操

7.Java集合-Arrays类实现原理及源码分析

Java集合---Arrays类源码解析 转自:http://www.cnblogs.com/ITtangtang/p/3948765.html 一.Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序.其中主要分为Primitive(8种基本类型)和Object两大类. 基本类型:采用调优的快速排序: 对象类型:采用改进的归并排序. 1.对于基本类型源码分析如下(以int[]为例): Java对Primitive(int,float等原型数据)数组采用快速排序,对

第9篇-JAVA面向对象-常用类Ⅴ

第9篇-JAVA面向对象-常用类Ⅴ 每篇一句 :巨轮寻深水而航行 初学心得: 没有胆大的猜测就没有伟大的发现 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-13| JAVA面向对象 Ⅴ] 1.JAVA Scanner类 java.util.Scanner 是 Java5 的新特征,读者可以通过 Scanner 类来获取用户的输入 创建 Scanner 对象的基本语法格式: Scanner s = new Scanner(System.in); 使用 next 方法代码: 1