容器类:是Java以类库的形式供用户开发程序时可直接使用的各种数据结构。
容器接口有两种:List列表接口 Set集合接口
一、列表接口List
性质:List是Collection子接口,它是一种包含有序元素的线性表,其中的元素必须有顺序存放,且可重复,可为null
List有两种:链表类LinkedList和数组列表类ArrayList
创建两种表的对象(需先引入java.util.* 包)
1 LinkedList<?> ld=new LinkedList<?>(); //链表
2 ArrayList<?> al=new ArrayList<?>(); //数组列表
二、集合接口Set
Set性质:不含重复的元素,也是继承自Collection接口。Set集合中的对象不按特定的方式排序,只是简单的将对象加入到集合中。集合中的元素的顺序与元素加入集合的顺序无关。
实现Set接口有两个主要类:HashSet哈希集合 TreeSet集合
HashSet:根据哈希码来存取集合中的元素。哈希集合是在元素的存储位置和元素的k值之间建立一个特定的对应关系f,使每一个元素与唯一一个的存储位置相对应。(可以简单的想象成函数y=f(k))
TreeSet:TreeSet与HashSet很相似,但TreeSet集合里的元素总是处于有序的状态。
简单的使用Set
1 import java.util.*;
2 public class TreeSetClass {
3 public static void main(String[] args) {
4 Set<String> hs=new HashSet<String>(); //创建哈希集合对象hs
5 hs.add("唐 僧");
6 hs.add("孙悟空");
7 hs.add("猪八戒");
8 hs.add("沙和尚");
9 hs.add("白龙马");
//以HashSet对象为参数,以hs对象里的元素创建TreeSet对象
10 TreeSet<String> ts=new TreeSet<String>(hs); //创建树集合
11 System.out.println("树集合:"+ts); //输出树集合
12 System.out.println("树集合的第一个元素:"+ts.first());
13 System.out.println("树集合的最后一个元素:"+ts.last());
14 System.out.println("headSet(孙悟空)的元素:"+ts.headSet("孙悟空"));
15 System.out.println("tailSet(孙悟空)的元素"+ts.tailSet("孙悟空"));
16 System.out.println("ceilSet(沙)的元素:"+ts.ceiling("沙"));
17 }
18 }
三、迭代器
迭代器Iterator:类似于遍历,对容器中的元素进行访问且只访问一次。
Iterator有三个方法:
hasNext():判断是否含有后续元素,有则返回true
next():返回后续元素
remove():删除迭代器当前指向的元素
Iterator有一个子类接口ListIteraotr,ListIterator只能用于List及其子类。
创建一个迭代器:
1 import java.util.*;
2 ArrayList<Integer> al=new ArrayList<Integer>();//创建数组列表
3 Iterator<Integer> iterator=al.iterator(); //返回al的迭代器
四、映射接口Map
Map是另一种存储数据结构的对象。
Map性质:Map中的元素是成对出现的,它提供了键(key)到值(value)的映射。(Map没有继承Collection)接口
Map有两种:HashMap 和 TreeMap
和集合一样,HashSet是无序的,TreeMap是有序的
Map的一般方法:
put(K key,V value)
putAll(Map<? extends k,? extends V)m) 把m的所有元素添加到Map对象中
get(K key) //返回k所映射的值,没有就返回null
Set<k> keySet() //返回该集合中所有键对象形成的Set集合
V remove(Object key) //将键key的条目移除