集合框架 (collection)
集合的说明:
当你的数据多了,你就封装到一个对象里,当对象多了,就会封装到集合里。
其实,集合是用来存储对象一种方式。
数组与集合区别:
数组:长度是固定的,可以存储基本数据类型,可以存储对象。
集合:长度是可变的,只能存储对象。
集合框架体系:
下面介绍 Collection 接口下的2个帮派 List , Set
List ( 有序的集合 ) ------------------------------------
List 特点:元素是有序的,可以存储重复的元素,因为List 具备索引,底层是数组结构。List 下分别有2个小弟 : ArrayList , LinkedList
-------------------------------------------------------------------------------------------------------------------------------------
ArrayList 示例:
/* 创建 */
ArrayList al = new ArrayList(); //创建空参数ArrayList对象,初始化容量为10
ArrayList a2 = new ArrayList(20); //创建ArrayList对象,且指定初始化容量为20
ArrayList a3 = new ArrayList(a2); //创建ArrayList对象,且传入ArrayList对象,初始化数据。
/* 添加 */
al.add("abc"); //添加元素
al.add(0 ,"qwe"); //指定位置下添加元素 (位置不可超过size()-1)
al.addAll(a2); //添加Collection下的对象
al.addAll(0, a2); //从指定位置下,添加Collection下的对象
/* 删除 */
al.remove("abc"); //根据元素删除内容
al.remove(0); //根据索引删除内容
al.clear(); //移除此列表中的所有元素。
/* 修改 */
al.retainAll(a2); //2个元素相比较,返回相同元素
al.removeAll(a2); //2个元素相比较,删除相同元素
al.set(0,"qqqq"); //指定索引,将索引对应的元素修改成qqqq
/* 判断 */
al.isEmpty(); //判断列表为空
al.contains("abc"); //判断列表是否包含指定元素 abc
/* 获取 */
al.size(); //返回列表的长度
al.clone(); //返回当前实例对象。
al.get(0); //根据索引,查找元素
al.indexOf("abc"); //根据元素,查找索引,找到返回索引位,否则-1
al.lastIndexOf("abc"); //根据元素,查找索引,找到返回索引位,否则-1,从右往左开始
List sub = al.subList(0, 2); //指定开始结束-1的范围,返回一个List对象,
//这个需要注意,返回的是一个引用地址,不是新建立的
//需要注意的是 sub调用remove方法删除某个元素时,al对象的元素也会被删除。
String[] s = (String[]) al.toArray(new String[0]); // 转换成数组对象。
LinkedList 实例:
<pre name="code" class="java">
LinkedList l2 = new LinkedList(ll); //创建LinkedList对象,且传入LinkedList对象,初始化数据。
/* 它具备ArrayList的方法,此处不再敖述 */
/* 下面是LinkedList 特有的方法 */
ll.offerFirst("q"); //每一次都是从第一个位置插入元素
ll.offerFirst("w"); //每一次都是从第一个位置插入元素
ll.offerFirst("e"); //每一次都是从第一个位置插入元素
ll.offerFirst("r"); //每一次都是从第一个位置插入元素
ll.offerFirst("a"); //每一次都是从第一个位置插入元素
ll.offerLast("1"); //每一次都是从最后个位置插入元素
ll.peekFirst(); //每一次都是获取第一个元素
ll.peekLast(); //每一次都是获取最后个元素
ll.pollFirst(); //每一次都是获取第一个元素后删除元素
ll.pollLast(); //每一次都是获取最后个元素后删除元素
ll.element(); //获取第一个元素后不删除元素
ll.offer("1111"); //在最后处插入元素。
ll.peek(); //获取第一个元素后不删除元素
ll.poll(); //获取第一个元素后删除元素
遍历集合通用方式:
ArrayList<Integer> al = new ArrayList<Integer>();
for(int i = 0; i<5; i++)
{
al.add(i);
}
//集合通用的遍历方式,通过迭代器遍历元素
Iterator it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
/* 需要注意的是,迭代器里不允许使用it.next()二次,否则引发 NoSuchElementException 异常 */
/* Iterator 支持删除操作 调用it.remove()方法即可 */
//通过高级For循环遍历
for(Integer a :al)
{
System.out.println(a);
}
List 集合 特有的迭代器
ListIterator li = al.listIterator();
while(li.hasNext()) //正向遍历
{
System.out.print(li.next()+" ");
}
System.out.println();
while(li.hasPrevious()) //逆向遍历
{
System.out.print(li.previous ()+" ");
}
System.out.println();
/* 在遍历的过程中,可以进行增删改查 */
/*
li.add(); //添加
li.set(5); //修改
li.remove(); //删除
li.next(); //正向获取元素
li.previous(); //反向获取元素
li.hasNext() //判断下一个有没元素
li.hasPrevious() //判断上一个有没元素
*/