Java学习第十五天之Collection、Iterator、List

来源:互联网 发布:dota地精工程师知乎 编辑:程序博客网 时间:2024/06/07 02:53
/** *  */package cn.collection.demo;import java.util.ArrayList;import java.util.Collection;/** * @author 韦玉梅  2017/3/14 */public class CollectionDemo {    /**    * @param     * 集合类    * 为什么出现集合类?    * 面向对象语言体现的都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式    * 数组和集合类同是容器,有何不同?    * 1、数组虽然也可以存储对象,但长度是固定的,集合长度是可变的。    * 2、数组可以存储基本数据类型,集合只能存储对象    * 集合类的特点?    * 集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象    *     * 因为容器中数据结构不同,容器有很多种,不断地共性功能抽取,形成了集合体系--->集合框架顶层就成为Cellection接口    *     * collection接口中的共性功能    * 1、添加    *   boolean add(Object o)    *   boolean addAll(Collection c):将制定容器中的所有元素添加    * 2、删除    *   void clear();    *   boolean remove(object o)    *   boolean removeAll(Collection c);    * 3、获取长度    * int size()    * 4、判断    *   boolean isEmpty();    *   boolean contains(Object o)    *   boolean containsAll(Collection c)    * 5、将集合转数组    *   toArray();    *   toArray([]);    * 6、取出集合元素    * Interrator iterator    * 获取集合中元素上迭代功能的迭代器对象    * 迭代:取出元素的一种方式    * 迭代器:具备着迭代功能的对象    * 而迭代对象不需要new  直接通过iterator方法获得    * 迭代器是取出Collection集合中 元素的公共方法    *     * Collection    *           |--list(存入的人顺序和取出的顺序一致,)有索引,允许重复元素    *           |--set(不允许重复元素)    * 重点讲list接口中的特有方法:他的特有方法都是围绕索引定义的    * 支持增删改查    * 増:add(index,element)    * 删:remove(index);    * 改:set(index,new_element);    * 查:indexOf(element);    * element get(index);    */    public static void main(String[] args) {//      演示collection中的基本功能//      ArrayList<String> collection =new ArrayList<String>();        Collection collection  =new ArrayList();        methodDemo(collection);    }    /**     *      */    public static void methodDemo(Collection collection) {        collection.add("123");        collection.add("abd");        collection.add("12sdd");        System.out.println(collection+"\t"+collection.size());        collection.remove("12sdd");        System.out.println(collection+"\t"+collection.size());        collection.clear();        System.out.println(collection+"\t"+collection.size());    }}
/** *  */package cn.collection.demo;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;/** * @author 韦玉梅 * */public class InteratorDemo {    /**    * @param     * Iterator的方法    * hasNext()   next()  remove()    */    public static void main(String[] args) {        //创建集合        Collection collection =new ArrayList();        collection.add("abc");        collection.add("xyz");        //获取该容器的迭代器        Iterator iterator =collection.iterator();//      System.out.println(iterator.next()+"\t"+iterator.next()+"\t"+iterator.next());//会报NoSuchElementException        while(iterator.hasNext()){            System.out.println(iterator.next());        }        //循环打印输出        for(Iterator iterator2=collection.iterator();iterator2.hasNext();){            System.out.println(iterator2.next());        }    }}
/** *  */package cn.collection.demo;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;/** * @author 韦玉梅 */public class ListDemo {    /**    * @param List支持增删改查    * list集合的具体子类。子类之所以区分是因为内部的数据结构(存储数据的方式不同)    *   |--Vector:数据结构是数组,数组是可变长度的(不断new新数组并将元素复制到新数组当中。线程同步的,增删和查询都很慢    *   |--ArrayList:也是数组结构,也是长度可变的。线程不同步的,替代了Vector,增删速度不快。查询速度很快    *   |--LinkedList:链表结构,线程不同步的。增删速度很快查询速度较慢    */    public static void main(String[] args) {        List list=new ArrayList();        methodDemo(list);    }    /**     *      */    private static void methodDemo(List list) {//      1、常规添加元素        list.add("123");                list.add("abcd");//      2、插入元素        list.add(1,"xyz");        System.out.println(list);//      删除        list.remove(2);        System.out.println(list);//      获取        System.out.println(list.get(1));//      获取        System.out.println(list.indexOf("123"));//      修改        list.set(1, "Bubble");        System.out.println(list);//      取出集合中的所有元素        for(Iterator iterator=list.iterator();iterator.hasNext();){            System.out.println("iterator:"+iterator.next());        }//      list集合特有的取出方式        for(int i=0;i<list.size();i++){            System.out.println("get:"+list.get(i));        }//      在遍历的过程中,如果遍历到一个123,添加一个元素Blue        /*for(Iterator iterator=list.iterator();iterator.hasNext();){            Object object=iterator.next();          //           java.util.ConcurrentModificationException://               迭代过程中使用了集合对象同时对元素进行操作。导致了迭代的不确定性,引发了该异常。//               解决思想:在迭代过程中,想要执行一些操作,使用迭代器的方法就可以了                           if(object.equals("123"))                list.add("Blue");            System.out.println("list:"+list);        }*/        for(ListIterator iterator=list.listIterator();iterator.hasNext();){            Object object=iterator.next();                                   if(object.equals("123"))                 list.add("Blue");        }        System.out.println("list:"+list);    }}
0 0