Java当中拥有众多的集合类,尤其是ArrayList,以及HashMap在平时的开发中用的比较多,再次深深感谢Java给我们带来了这么多好用的工具类。
一.基础知识
Java集合类层次结构图
(图片盗用老师课件资源图)
其中Vector容器已经不太推荐使用了。通过该图可以看出主要是实现Collection接口以及Map接口。
二.具体用法
1.Collection接口常用方法
方法 | 含义 |
boolean add(Object) | 集合中加入一个对象,成功时返回true |
boolean addAll(Collection) | 集合中加入另外一个集合对象 |
int size() | 集合内容纳的元素数量 |
boolean isEmpty() | 集合是否为空 |
boolean contains(Object) | 集合内是否含有参数对象 |
Iterator iterator() | 产生一个迭代器 |
Object[] toArray() | 返回一个包含所有元素的对象数组 |
Object[] toArray(Object[]) | 把所有元素放入对象数组中 |
boolean remove(Object) | 从集合中删除对象 |
boolean removeAll(Collection) | 清空指定集合 |
boolean containsAll(Collection) | 判断集合内是否包含子集 |
boolean retainAll(Collection) | 删除子集合不包含的元素 |
void clear() | 清空集合 |
Object[] toArray(Object[]) | 把所有元素放入对象数组中 |
2.List接口
用来包含有序有重复的对象,这点跟Set接口刚好相反,下面使用例子来说明它们的使用方法
package com.itopic;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
//List接口test
list.add("a");
list.add("b");
list.add("c");
list.add("a");
System.out.println("ArrayList:"+list);
Set<String> set = new HashSet<String>();
set.add("a");
set.add("b");
set.add("c");
set.add("a");
System.out.println("HashSet:"+set);
}
}
输出结果是:
ArrayList: [a, b, c, a]
HashSet: [b, c, a]
可以看出实现List接口的具体实现类ArrayList存储的对象是有序且可重复的,而HashSet会依据加入顺序进行存储且不能有重复对象。
下面说一下ArrayList与LinkedList
ArrayList
它是线性表,跟数组有点类似,我们使用它的时候可以把它看做可变长数组,使用ArrayList可以帮助我们解决数组不可变长的不足。
LinkedList
其实就是Java实现的链表,它跟ArrayList很大的不同就是它拥有一些方法,可以便于删除,修改,添加它的头部或尾部的对象,数据结构常用的队列,栈就可以通过LinkedList来实现,以下是它特有的一些方法:
void addFirst(Object o) | 将给定元素插入此列表的开头 |
void addLast(Object o) | 将给定元素追加到此列表的结尾 |
Object getFirst() | 返回此列表的第一个元素 |
Object getLast() | 返回此列表的最后一个元素 |
Object removeFirst() | 移除并返回此列表的第一个元素 |
Object removeLast() | 移除并返回此列表的最后一个元素 |
package com.itopic;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<String>();
//List接口test
list.add("a");
list.add("b");
list.add("c");
list.add("d");
//插入头部
list.addFirst("first");
//插入尾部
list.addLast("last");
System.out.println(list);
}
}
运行结果
[first, a, b, c, d, last]
操作性能
ArrayList适合随机查询的场合
未完待续........................