当前位置:文档之家› JAVA中常用的集合类型

JAVA中常用的集合类型

JAVA常用的高级数据类型——集合类型一、JAVA语言中的集合类型主要有三种形式:Set(集)、List(列表)、Map(映射),每种类型的集合都包括三部分:接口、实现和算法。

a)集合接口实现集合的操作和集合的具体功能实现细节的相互分离——Set接口、List接口、Map接口b)集合的具体功能实现类实质上是各种可重用的数据结构的具体表示List接口的实现类有ArrayList、LinkedList、Stack和Vector等集合类,Vector 类提供了实现可增长数组的功能,随着更多元素加入其中,数组变的更大。

在删除一些元素之后,数组变小。

Set接口的实现类有HashSet、LinkedHashSet和TreeSet等集合类Map接口的实现类有HashMap、Hashtable、LinkedHashMap、Properties和TreeMap等集合类。

c)集合的算法指可以对实现集合接口的各个集合的功能实现类提供如排序、查找、交换和置换等方面的功能实现。

二、List接口1.List接口代表有序的集合,可以对List接口代表的有序集合中每个元素的插入位置进行精确地控制,并利用元素的整数索引(代表元素在集合中的位置)访问元素中的各个成员,List接口代表的集合是允许出现重复元素的。

2.List接口主要成员方法:1)void add(int index,E element)在列表指定位置插入指定元素2)E get(int index) 返回结合中指定位置的元素3)E remove(int index) 移除集合中指定位置的元素4)E set(int index,E elment) 用指定元素替换集合中指定位置的元素5)boolean add(E o) 向列表的尾部追加指定的元素6)boolean contains(Object o) 如果列表包含指定的元素,则返回true。

7)boolean isEmpty() 如果列表不包含元素,则返回 true。

8)int size() 返回列表中的元素数9)Iterator iterator()返回以正确顺序在列表的元素上进行迭代的迭代器。

3.List的实现类List在数据结构中分别表现为数组(ArrayList)、向量(Vector)、链表(LinkedList)、堆栈(Stack)和队列等形式。

Vector集合和ArrayList集合都是采用数组形式来保存对象,区别在于ArrayList集合本身不具有线程同步的特性,不能用在多线程的环境下,可以使用ArrayList集合能够节省由于同步而产生的系统性能的开销。

而Vector集合实现了对线程同步的支持,因此在多线程并发访问的应用环境下,该集合本身能够保证自身具有线程安全性。

在多线程的并发访问中,可以将Vector集合的对象实例设计为类中的成员属性,而应该将ArrayList 集合的对象实例设计为局部对象。

public class UserInfo{List oneVector=new Vector();public void execute(){List oneArraylist=new ArrayList();}}4.exampleimport java.util.ArrayList;import java.util.List;public class ListExample {public static void main(String[] args) {// TODO Auto-generated method stubList oneList=new ArrayList();oneList.add("zhangsan");oneList.add("lisi");oneList.add(new Integer("1234"));//允许集合包含不同类型元素oneList.add("lisi");//允许集合包含相同元素System.out.print(oneList);}}三、Set接口1.Set接口代表一个无序并且不允许元素重复存在的集合2.Set接口主要成员方法1)boolean add(E o) 如果 set 中尚未存在指定的元素,则添加此元素2)boolean remove(Object o) 如果 set 中存在指定的元素,则将其移除3)int size() 返回 set 中的元素数(其容量)。

4)boolean isEmpty() 如果 set 不包含元素,则返回 true。

6)boolean contains(Object o) 如果 set 包含指定的元素,则返回 true。

7)Iterator iterator() 返回在此 set 中的元素上进行迭代的迭代器。

3. Set接口的实现类Set接口的实现类有HashSet、LinkedHashSet和TressSet等集合类HashSet集合中元素对象是以hashcode码作为标识,所以放入的成员元素对象的内容是不能重复的;HashSet集合中元素对象是无序的——成员元素的存储和添加时的顺序并不完全一致。

对于自定义的类型需要重写hashcode()方法和equals()方法。

TreeSet集合:如果想对输入的数据进行有序排列,则要使用TreeSet 子类。

这里的有序是对象的大小顺序,而不是对象插入到集合当中的顺序。

LinkedHashSet是在HashSet的集合的基础上添加了双向链的支持。

4. exampleimport java.util.HashSet;import java.util.Set;public class HashSetDemo01 {public static void main(String[] args) {Set allSet = new HashSet();allSet.add("A") ;// 增加元素allSet.add("B") ;// 增加元素allSet.add("C") ;// 增加元素allSet.add("C") ;// 重复元素,不能加入allSet.add("C") ;// 重复元素,不能加入allSet.add("D") ;// 增加元素allSet.add("E") ;// 增加元素System.out.println(allSet) ;// 输出集合对象,调用toString()}}程序运行结果:[D, A, C, B, E]三、Map接口1.Map中的每个成员元素是由一个关键字(Key)和一个值(value)构成的。

该集合中成员元素的关键字不能重复,并且每个键只能与一个值相对应。

2.Map接口主要成员方法1)V put(K key, V value) 将指定的值与此映射中的指定键关联2)V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除3)V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。

4)Boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true。

5)int size()返回此映射中的键-值映射关系数。

6)boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。

7)boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。

3.Map接口的实现类Map接口的实现类有HashMap、Hashtable、LinkedHashMap、Properties 和TreeMap等集合类。

HashMap和HashTable区别于ArrayList和Vector类似,HashMap是采用非线程安全的方式设计的,效率上高于Hashtable集合。

在多线程并发访问的环境下应用Hashtable集合对象时不需要开发人员单独为它的方法实现同步锁定——因为Hashtable集合中的所有方法都是同步定义的方法。

在多线程的并发访问的应用环境中,开发人员可以将Hashtable集合的对象实例设计为类的成员属性对象,应该将HashMap集合的对象实例设计为方法的局部对象。

public class UserInfo {Map oneHashtable=new Hashtable();public void execute(){Map oneHashMap=new HashMap();……}}4.exampleimport java.util.HashMap;import java.util.Map;public class MapExample {public static void main(String[] args) {// TODO Auto-generated method stubMap cityHashMap=new HashMap();cityHashMap.put("beijing", "北京");cityHashMap.put(2, 3); //允许集合中包括不同类型的关键字和值cityHashMap.put("nanchang", "南昌");cityHashMap.put("nanchang", "江西");//后面元素覆盖前面相同键名的元素System.out.print(cityHashMap);}}四、迭代器Iterator1.Iterator对集合进行迭代(遍历)。

2.Iterator常用的方法1)boolean hasNext() 如果仍有元素可以迭代,则返回 true2) E next() 返回迭代的下一个元素3.ExampleList list=new ArrayList();list.add("aa");list.add("bb");Iterator iter=list.iterator();while(iter.hasNext()){System.out.println(iter.next());}。

相关主题