Java list集合 ArrayList

1.list集合特点

数组大小固定,集合大小可变

数组可以存放基本数据类型,集合只能存放对象

1.1 有索引,0开始

1.2 集合元素可以重复

1.3 元素存入的顺序和实际存储的顺序是相等的 

2. 常用方法

3. 集合遍历

遍历方式有转换为数组遍历,使用迭代器遍历,使用foreach遍历(语法糖,实际为迭代器),下面为迭代器遍历。

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("jia");
        list.add("ru");
        list.add("jian");
        
        //使用迭代器遍历集合
        Iterator<String> it = list.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
    }

3.1 遍历过程中出现并发修改异常(ConcurrentModificationException)

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("jia");
        list.add("ru");
        list.add("jian");
        list.add("jian");
        list.add("jian");

        //使用迭代器遍历集合
        Iterator<String> it = list.iterator();
        while (it.hasNext()){
            String s = it.next();
            if (s.equals("ru"))
                list.remove(s);      //错误处,如果元素为三个,可正常结束,输出两个元素jia,ru
            System.out.println(s);
        }
    }

3.2 遍历过程报错解决(可用for循环)

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        ArrayList<String> removeList = new ArrayList<>();
        list.add("jia");
        list.add("ru");
        list.add("jian");
        list.add("jian");
        //使用迭代器遍历集合
        Iterator<String> it = list.iterator();

        while (it.hasNext()){
            String s = it.next();
            if (s.equals("ru"))
                removeList.add(s);
        }
        list.removeAll(removeList);
        System.out.println(list);
    }

        foreach在进行循环时也是使用迭代器(不包括数组)

4.类型转换(集合转数组)

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        ArrayList<String> removeList = new ArrayList<>();
        list.add("jia");
        list.add("ru");
        list.add("jian");
        list.add("jian");
        
        
        Object[] objects = list.toArray();
        for (Object str : objects) {
            System.out.println(str);
        }
        
        //推荐,避免之后强制转换类型
        String[] strings = list.toArray(new String[0]);
        for (String string : strings) {
            System.out.println(string);
        }

    }

5. ArrayList和LinkedList的区别

都是实现了List的接口,不同的是存储数据的数据结构不同,Array List使用数组来存储数据,LinkedList使用链表,所以各自的特点也和合资的数据结构特点一样。

ArrayList:查找快,增删满

LinkedList:增删快,查找慢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值