Java集合类

数组是一种很常见的数据结构,开始接触编程的时候多数程序都和数组相关。刚开始接触Java时也是一直使用数组写一些程序,后来越来越觉得数组这东西没法满足需求了,这时一位“前辈”对我说了一句:不会用集合类就等于没学过Java。然后才知道有集合类。

想想已经是3、4年前的事了,时间如白驹过隙啊。

什么时候数组会显得力不从心,没法满足需求,需要集合类呢?

当然,网站空间,上面的情况不是绝对的,只是数组比较难满足。这时集合类(也可称为容器类)就显示了它强大的功能。

集合类的分类(图片转自)

上图中不包含Queue内容,部分Map的实现类未给出。

常见使用的有List、Set、Map及他们的实现类。

List、Set、Map接口及各实现类的特性

接口

特性

实现类

实现类特性

成员要求

List

线性、有序的存储容器,可通过索引访问元素

ArrayList

数组实现。非同步。

Vector

类似ArrayList,香港服务器租用,同步。

LinkedList

双向链表。非同步。

Map

保存键值对成员

HashMap

基于哈希表的 Map 接口的实现,满足通用需求

任意Object对象,如果修改了equals方法,需同时修改hashCode方法

TreeMap

默认根据自然顺序进行排序,或者根据创建映射时提供的 Comparator进行排序

键成员要求实现caparable接口,或者使用Comparator构造TreeMap。键成员一般为同一类型。

LinkedHashMap

类似于HashMap,香港空间,但迭代遍历时取得“键值对”的顺序是其插入顺序或者最近最少使用的次序

与HashMap相同

IdentityHashMap

使用==取代equals()对“键值”进行比较的散列映射

成员通过==判断是否相等

WeakHashMap

弱键映射,允许释放映射所指向的对象

ConcurrentHashMap

线性安全的Map

Set

成员不能重复

HashSet

为快速查找设计的Set

元素必须定义hashCode()

TreeSet

保持次序的Set,底层为树结构

元素必须实现Comparable接口

LinkedHashSet

内部使用链表维护元素的顺序(插入的次序)

元素必须定义hashCode()

在满足要求的情况下,Map应尽量使用HashMap,Set应尽量使用HashSet。

集合类的基本使用

List

List基本操作

1 ArrayList<String> arrayList = new ArrayList<String>(); 2arrayList.add(“Tom”); 3arrayList.add(“Jerry”); 4arrayList.add(“Micky”); 5// 使用Iterator遍历元素 6Iterator<String> it = arrayList.iterator(); 7while (it.hasNext()) { 8String str = it.next(); 9System.out.println(str);10}11// 在指定位置插入元素12arrayList.add(2, “Kate”);13// 通过索引直接访问元素14for (int i = 0; i < arrayList.size(); i++) {15System.out.println(arrayList.get(i));16}17List<String> subList = new ArrayList<String>();18subList.add(“Mike”);19// addAll(Collection<? extends String> c)添加所给集合中的所有元素20arrayList.addAll(subList);21// 判断是否包含某个元素22if (arrayList.contains(“Mike”)) {23System.out.println(“Mike is include in the list”);24}25 26LinkedList<String> linkedList = new LinkedList<String>();27linkedList.addAll(arrayList);28// 获取指定元素29System.out.println(linkedList.get(4));30// 获取第一个元素31System.out.println(linkedList.getFirst());32// 获取最后一个元素33System.out.println(linkedList.getLast());34// 获取并删除第一个元素35System.out.println(linkedList.pollFirst());36// 获取,但不移除第一个元素37System.out.println(linkedList.peekFirst());留下许多叫知识和情感的东西握在手里。

Java集合类

相关文章:

你感兴趣的文章:

标签云: