集合2 ArrayList

ArrayList

public class List {

    public static void main(String[] args) {
        //TODO ArrayList : Array + List
        //List : 列表,清单  -- 按照数据插入顺序进行存储
        //Array : 数组,阵列 -- ArrayList的底层是一个数组

        //1. 不需要传递构造参数 -- 底层是空数组
        ArrayList list = new ArrayList();
        //2. 需要传递一个int类型的值,用于设定底层数组的长度
        //3. 需要传递一个Collection集合类型的值,用于将其他集合的数据放置于当前集合中

        //TODO 增加数据
        //add方法 可以增加数据,将数据作为参数传递到add方法即可
        //添加第一条数据时,如果集合中没有任何数据,则底层会固定创建长度为 10 的数组
        //集合的数组中存放的不是对象本身,而是对象的索引
        list.add("zz");
        list.add(1);
        list.add("zz");
        list.add("zz");
        list.add("zz");
        list.add(1,"haha"); //指定位置的add = 顺序表的插入,之后的元素会逐个后移

        //TODO add的底层原理
        //     当ArrayList中的数组存满后,会创建容量更大的新数组 -- !而不是将旧数据扩容
        //     将旧数组中已经有的索引复制到新数组中,再释放旧数组空间

        //.size() 获取集合中数据的条数
        System.out.println(list.size());
        //.get() 采用索引方式获取指定位置的数据 -- 底层是数组 => 数据的索引 0 ~ length-1
        System.out.println(list.get(0));
        // 遍历集合中的数据
        for (int i = 0; i < list.size(); i++) {
            System.out.println("for集合中的数据:" + list.get(i));
        }
        //for-each循环
        for(Object obj : list){
            System.out.println("for-each : " + obj);
        }

        //TODO 修改数据
        //.set() 修改指定位置的数据
        //第一个参数表示数据位置,第二个参数表示修改的值,并返回更新前的值
        Object oldValue = list.set(0,"hehe");
        System.out.println("修改前的值:"+oldValue);

        //TODO 删除数据
        //.remove() 传入删除数据的位置,返回删除数据的值
        System.out.println("删除的值" + list.remove(0));

        //TODO addAll
        //将另一个集合的所有元素按序添加到集合中,且保留插入的集合 => 集合中有子集合
        ArrayList otherList = new ArrayList();
        otherList.add("a");
        otherList.add("b");
        otherList.add("c");
        list.addAll(otherList);

        //TODO isEmpty() 判断是否为空
        System.out.println(list.size());
        System.out.println(list.isEmpty());
        //.clear()  删除集合中所有数据,集合的数组容量不变
        //list.clear();
        //.removeAll() 删除集合中子集合的全部数据
        System.out.println(list);  // [haha, 1, zz, a, b, c]
        list.removeAll(otherList); // otherList : [a, b, c]
        System.out.println(list);  // [haha, 1, zz]

        //TODO .contains() 判断集合中是否存在某条数据
        System.out.println(list.contains("haha")); //true

        //TODO .indexOf() 检索数据在集合中的位置,存在返回第一个数据的位置,不存在返回 -1
        System.out.println(list.indexOf("zz")); //2
        //TODO .lastIndexOf() 检索数据在集合中的位置,存在返回最后一个数据的位置,不存在返回 -1
        System.out.println(list.lastIndexOf("zz")); //4
        //中间的数据无法获取

        //TODO .toArray() 集合转数组
        Object[] objects = list.toArray();

        //TODO .clone() 克隆\复制 一个和原集合内容相同的新对象
        ArrayList list1 = (ArrayList) list.clone();
        System.out.println(list1);

    }

}
posted @   LaViez  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示