转载
Collection: 用于管理多个对象的对象。集合中的元素是对象。
1、List接口
概述:
1)特点: List接口继承了Collection接口,是有序的集合,且List允许有重复的元素。
2)遍历:
迭代遍历: 通过iterator()方法返回的迭代器进行遍历;
for循环: 通过get(int index)在循环中遍历;
* 除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,能向前或向后遍历。
3) 排序: 通过Collections类中的静态方法sort(List)对List进行排序;
* 注意,列表中的所有元素都必须实现 Comparable 接口.
4)实现List接口的常用类有:LinkedList,ArrayList,Vector和Stack。
实现类:
1)ArrayList类
ArrayList实现了可变大小的数组。每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。
这个容量可随着不断添加新元素而自动增加,当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
ArrayList是非同步的(unsynchronized)。
2)LinkedList类
LinkedList是List接口的链表实现,提供了在链表开头和结尾增删元素的方法,可被用作堆栈(stack),队列(queue)或双向队列(deque)。
LinkedList也是非同步的。
3)Vector类
Vector是遗留类,非常类似于ArrayList,但是Vector是同步的。
4)Stack 类
Stack继承自Vector,实现一个后进先出的堆栈。
2、Set接口
概述:
1)特点:Set接口也继承于Collection接口,是无序的集合,且它不允许包含重复的元素。
2)遍历:通过iterator()方法返回的迭代器进行遍历;
3)SortedSet是Set的子接口;实现Set接口的常用类有:HashSet, TreeSet。
实现类:
1)HashSet类
实现了Set接口,由哈西表支持。
* 注意,放入HashSet中的元素要覆盖Object类的hashCode()方法和equals()方法,必须保证相同的对象返回的hashCode值相同。
2)TreeSet类
实现了SortedSet接口,它会对添加的元素自动进行升序排序。
* 注意,在TreeSet集合中必须放同类元素,且元素之间可进行比较(可实现Comparable接口)。
3、Map接口
概述:
1)特点:Map没有继承Collection接口,Map提供key到value的映射。一个映射不能包含重复的key,每个key只能映射一个value。
2)遍历:Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。
3)SortedMap是Map的子接口;实现Map接口的常用类有:HashMap, HashTable, TreeMap。
实现类:
1)Hashtable类
实现一个key-value映射的哈希表。任何非空的对象都可作为key或者value。添加数据使用put(key, value),取出数据使用get(key)。
由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置,因此任何作为key的对象都必须覆盖hashCode()和equals()方法。
Hashtable是同步的。
* hashCode()和equals()方法继承自根类Object,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个对象相同,即obj1.equals(obj2)=true,
则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同,如果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,
所以尽量定义好的hashCode()方法,能加快哈希表的操作。
需要牢记一条:要同时复写equals方法和hashCode方法,而不要只写其中一个。
2)HashMap类
HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。
3)TreeMap类
实现了SortedMap接口,该映射按照键值自动排序。插入该映射的所有键必须实现 Comparable 接口。
也是非同步的。
Collection使用总结:
如果涉及到堆栈,队列等操作,应该考虑用List。
对于需要快速插入,删除元素,应该使用LinkedList。
如果需要快速随机访问元素,应该使用ArrayList。
如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高;如果多个线程可能同时操作一个类,应该使用同步的类。
要特别注意对哈希表的操作,作为key的对象要正确覆盖equals()和hashCode()方法。
尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。
补充: Collections类提供了很多用于操作集合的静态方法: Collections.sort(List)、Collections同步方法等
分享到:
相关推荐
### Java集合类详解总结 在Java编程中,集合框架(Collection Framework)是处理一组对象的强大工具,它提供了标准的数据结构来存储和操作这些对象。Java集合框架主要包括`Collection`、`Set`、`List`、`Queue`、`...
Java集合排序及java集合类详解.pdf
Java 集合类详解 Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、...
Java 集合排序及java 集合类详解 Java 集合排序及java 集合类详解,Java里面最重要、最常用也就是集合那部分了,能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。本教程详细解释了关于Java中的集合是...
### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。它提供了一种灵活的数据结构,支持多种类型的容器,包括列表(List)、集(Set)和映射(Map)...
java 集合排序及java集合类详解,本文详细解释了关于java中的集合实现,以及他们的实现原理
### Java集合排序及java集合类详解(Collection、List、Map、Set) #### 集合框架概述 ##### 容器简介 在Java编程中,容器(Container)是指用来存储和管理对象的一种数据结构。随着应用程序复杂度的增加,简单地...
Java集合排序及java集合类详解(Collection、List、Map、Set).doc
NULL 博文链接:https://vbo-zhang.iteye.com/blog/695498
Java集合排序及Java集合类详解 Java集合框架是Java语言中最重要、最常用的部分之一,它能够使开发者更方便地处理数据结构。Java集合框架主要包括Collection、List、Set、Map四个接口,它们分别实现了不同的数据结构...
Java集合排序及java集合类详解[定义].pdf
Java集合排序及java集合类详解(Collection、List、Map、Set)讲解 Java集合框架是Java语言中最重要的组件之一,能够正确使用Java集合框架对于Java程序的开发具有无比的好处。本文将详细解释Java集合框架的实现原理、...
Java集合排序及java集合类详解 Java集合框架是Java编程语言中极其重要的一部分,它提供了存储和操作数据的高效方式。本文将深入探讨Java集合框架的四大核心组件:`Collection`、`List`、`Map`和`Set`,以及它们的...