浅谈我对集合框架的了解 - List

来源:互联网 发布:古典音乐 知乎 编辑:程序博客网 时间:2024/04/30 11:18


集合框架 (collection)


集合的说明:

当你的数据多了,你就封装到一个对象里,当对象多了,就会封装到集合里。

其实,集合是用来存储对象一种方式。


数组与集合区别:

数组:长度是固定的,可以存储基本数据类型,可以存储对象。

集合:长度是可变的,只能存储对象。


集合框架体系:


下面介绍 Collection 接口下的2个帮派 List , Set 


List ( 有序的集合 ) ------------------------------------

List 下分别有2个小弟 : ArrayList , LinkedList

List 特点:元素是有序的,可以存储重复的元素,因为List 具备索引,底层是数组结构。

-------------------------------------------------------------------------------------------------------------------------------------

ArrayList 示例:

/* 创建 */ArrayList al = new ArrayList();   //创建空参数ArrayList对象,初始化容量为10ArrayList a2 = new ArrayList(20); //创建ArrayList对象,且指定初始化容量为20ArrayList 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");      //根据元素,查找索引,找到返回索引位,否则-1al.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() //判断上一个有没元素*/






0 0
原创粉丝点击