存东西找集合(Collection)的大儿子李斯特List

数组爸爸:我是个容器 只能装一种类型的数据,我天生容积不可变;可以存储基本类型的数据,也可存储引用的类型的数据
集合儿子:我也是个容器 我啥都能装 不同类型的数据也可以,我吃多少装多少。只能存储引用数据类型

集合:他整个是一个集合体系,由很多,不同类型的集合组成。

单列集合:Collection
        Collection collection=new ArrayList();
        Student s1 = new Student("张三", 23);
        Student s2 = new Student("李四", 23);
        Student s3 = new Student("王五", 23);
  往集合种添加元素add()
        collection.add(s1);
        collection.add(s2);
        collection.add(s3);
 //返回值的意思,是否添加成功
        boolean aaa = collection.add("aaa");
        //把两个集合的元素,归并到一个集合里面去
        boolean b = collection.addAll(collection2);
        //删除集合中的元素
        collection.remove("aaa");
        //A集合去removeAll(B集合) A集合中会移除掉两个集合中的交集元素,如果有交集元素被删除了,返回true
        //没有交集元素可删除返回false
        boolean b = collection.removeAll(collection2);
 //清空集合中的所有元素
        collection2.clear();

集合:
只能存储引用数据类型
/
*

  collection.add(100); //自动装箱
    collection.add(Integer.valueOf(200));
    collection.add(new Integer(300));
    collection.add(400);
    collection.add(500);

    //判断集合中有没有该元素
    boolean b = collection.contains(400);
     //判断集合是否为空
    boolean empty = collection2.isEmpty();
     //size()获取集合的长度
    int size = collection.size();
   // System.out.println(size);
   //A集合对B集合取交集,获取到的交集元素在A集合中。返回的布尔值表示的是A集合是否发生变化
        Collection collection2 = new ArrayList();
         //把集合转换成数组
        Object[] objects = collection.toArray();

        Integer object = (Integer) objects[0];
        System.out.println(object);

        //把数组转换成集合
        Integer[] arr={10,20,30,40};
        Collection collection1=  new ArrayList();
        for (int i = 0; i < arr.length; i++) {
            collection1.add(arr[i]);
        }

        //把数组转换成集合
        List integers = Arrays.asList(arr);

Collection 集合的遍历方式

 //先要获取一个迭代器,通过迭代器去遍历集合中元素
    Iterator iterator = collection.iterator();
    System.out.println(iterator);
   // Iterator 接口 迭代器
  /*  boolean hasNext ()
    如果仍有元素可以迭代,则返回 true。
    E next ()
    返回迭代的下一个元素。*/
   // iterator.next();
    while (iterator.hasNext()){
        Object next = iterator.next();
        System.out.println(next);
    }

List 接口中特有的方法

List :允许元素重复

  /*  void add ( int index, E element)
    在列表的指定位置插入指定元素(可选操作)。*/

  /*  E get ( int index)
    返回列表中指定位置的元素。*/

  /*  int indexOf (Object o)
    返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 - 1。*/

   /* ListIterator<E> listIterator ()
    返回此列表元素的列表迭代器(按适当顺序)。*/

   /* List<E> subList ( int fromIndex, int toIndex)
    返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。*/

根据指定的索引,来添加元素

list.add(0, 100);
System.out.println(list);

//根据索引获取集合中的元素
Object o = list.get(list.size() - 1);
System.out.println(o);

根据起始索引和终止索引,截取一段元素,放到新集合中

 List list1 = list.subList(2, 6);

遍历List集合的三种方式

     //方式1
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            Object next = iterator.next();
            System.out.println(next);
        }
        System.out.println("-------------------------");
        //方式2.List 有一个自己的迭代器 ListIterator
        ListIterator listIterator = list.listIterator();
        while (listIterator.hasNext()){
            Object next = listIterator.next();
            System.out.println(next);
        }
        System.out.println("---------------------------");
        //方式3:for循环遍历
        for (int i = 0; i < list.size(); i++) {
            Object o = list.get(i);
            System.out.println(o);
        }

//方式2.List 有一个自己的迭代器 ListIterator
        /*ListIterator 中的两个特有方法
        *boolean hasPrevious ()
        如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。
        E previous ()
        返回列表中的前一个元素。
        //要进行反向迭代之前,要先进行正向迭代

        */
        ListIterator listIterator = list.listIterator();
        //正向迭代
        while (listIterator.hasNext()) {
            Object next = listIterator.next();
            System.out.println(next);
        }
        System.out.println("-----------------");

        //反向迭代
       // ListIterator listIterator2 = list.listIterator();
        while (listIterator.hasPrevious()){
            Object previous = listIterator.previous();
            System.out.println(previous);

        }

ConcurrentModificationException 并发修改异常

我们在使用迭代器遍历,那么当集合中元素添加完毕,通过集合对象,获取迭代,那么这个迭代器,预先就已经知道你集合中的元素个数了。然后你使用迭代器,遍历,那么迭代器就会按照原先的顺序进行遍历,可是你在遍历途中,要添加一个元素就会打乱迭代器,预先设定好的顺序,就会抛出这个并发修改异常

   ListIterator listIterator = list.listIterator();
    while (listIterator.hasNext()) {
        Object obj = listIterator.next();
        String str = (String) obj;
        if (str.equals("world")) {
            //list.add("javaEE");
            listIterator.add("javaEE"); //使用迭代器添加或删除的方法
        }
    }

    //
    System.out.println(list);
    //那么怎么来处理这个并发修改异常呢?两种处理方式,
    //处理方式1.你用迭代器 遍历,那么你就使用迭代器自带的添加或删除元素的方法,来操作集合

    //2.你使用for循环来做
    for (int i = 0; i < list.size(); i++) {
        Object obj = list.get(i);
        String str = (String) obj;
        if (str.equals("world")) {
            list.add("javaEEEEE");
        }
    }
    
    System.out.println(list);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值