Java 集合 ArrayList &LinkedList

// 生活中也有集合的概念,是一个动词

// Java中的集合是一个名词,数据的一种容器,用于容纳数据
// Java提供了完整的集合框架

// TODO 问题:什么时候需要一个容纳数据的容器,也就是集合对象?
//           Java集合框架中包含了对不确定个数的数据处理的集合类
// TODO 问题:如果只是为了容纳数据,可以直接使用数组,为什么要学习集合?
//           数组使用起来不方便,在数据不确定的场合下,数组使用起来不方便

// TODO 总结:对不确定的有关系的数据进行相同的逻辑处理的场合,使用集合是一个不错的选择

// TODO 根据数据的不同,Java 的集合分为2大体系:
//  1.单一数据体系 :Collection接口定义了相关的规则
//  2.成对出现的数据体系 :Collection接口定义了相关的规则
//    所谓的成对的数据,就是2个数据他有关系,可以根据第一个数据关联到第二个数据
//    也称之为键值对数据,(350722200103211814,zhangsan)=>(key,value)
// 1.Collection接口
//   常用的子接口
//   List : 按照插入顺序保存数据,数据可以重复的
//          具体的实现类:ArrayList,LinkedList
//   Set : 集,无序保存,数据不能重复
//          具体的实现类:HashSet
//   Queue : 队列
//          具体的实现类:ArrayBlockingQueue
// 2.Map接口
//          具体的实现类:HashMap ,Hashtable
 // TODO 集合 - Collection - List
        //            ArrayList : Array + List
        // TODO List : 列表,清单
        //      按照数据插入顺序进行存储
        // TODO Array : 数组,陈列

        // TODO 创建第一个集合对象:ArrayList
        ArrayList list = new ArrayList();
        // 1. 不需要传递构造参数,直接new就可以,底层数组为空数组
        // 2. 构造参数需要传递一个int类型的值,用于设定底层数组的长度
        // 3. 构造参数需要传递一个Collection集合类型的值,用于将其他集合中的数据放置在当前集合中

        // TODO 增加数据
        // add方法可以增加数据,只要将数据作为参数传递到add方法即可
        // 添加数据时,如果集合中没有任何数据,那么底层会创建长度为10的数组
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
        list.add("zhaoliu");
        // TODO 访问集合中的数据
        // 获取集合中数据的条数
        System.out.println(list.size());
        // 获取指定位置的数据,可以采用索引的方法
        System.out.println(list.get(1));
        // 遍历集合中的数据
        for ( int i = 0; i < list.size(); i++){
            //System.out.println("集合中的数据:" + list.get(i));
        }
        // TODO 如果循环遍历集合数据时,不关心数据的位置,那么可以采用特殊的for循环
        // for (循环对象 对象名称 : 集合) { 循环代码 }
        for ( Object obj : list ) {
            System.out.println("集合中的数据:" + obj);
        }
        // TODO 修改数据
        // 将指定位置(索引)的数据修改,set方法需要传递两个参数,第一个参数表示数据的位置(索引位置),第二个参数表示修改的值
        // 方法会返回结果,这个结果就是更新前的值
        Object oldValue = list.set(1, "zhaoliu");
        System.out.println("修改前的值:" + oldValue);

        // TODO 删除数据
        // 将指定位置(索引)的数据删除,remove方法需要传递1个参数,第一个参数表示数据的位置(索引位置)
        // 方法会返回结果,这个结果就是删除的值
        Object removeValue = list.remove(1);
        System.out.println("删除的值:" + removeValue);

        // TODO 打印集合对象
        System.out.println(list);
 // ArrayList的常用方法
        ArrayList list = new ArrayList();

        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");

        // add方法是可以传递2个参数的,第一个参数表示数据增加的位置(索引),第二个参数表示数据
        list.add(1,"zhaoliu");

        ArrayList otherList = new ArrayList();
        otherList.add("1");
        otherList.add("2");
        otherList.add("zhangsan");
        list.addAll( otherList );

        // size方法表示集合内部数据的数量
        System.out.println(list.size());
        // 清空集合中的数据
        // list.clear();
        // 删除指定集合中的数据
        //list.removeAll( otherList );
        // 判断集合中的数据是否为空
        System.out.println(list.isEmpty());

        // 用于判断集合中是否存在某条数据,返回布尔类型的值
        System.out.println(list.contains("zhangsan"));
        // 用于获取数据在索引中的第一个位置,如果数据不存在,那么返回 -1
        System.out.println(list.indexOf("zhangsan"));
        System.out.println(list.lastIndexOf("zhangsan"));

        Object[]  objects = list.toArray();   // 把集合转为数组类型
        for (Object obj : list) {
            System.out.println(obj);
        }

        // 复制新集合
        Object clone = list.clone();
        ArrayList list1 = (ArrayList) clone;

        System.out.println(list);
        System.out.println(list1);
 // LinkedList : Linked(连接) + List
        // 构建集合对象
        LinkedList list = new LinkedList();

        // 增加第一个数据
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
//        list.addFirst("lisi");
//        list.add(1,"wangwu");

        // TODO 获取数据
//        System.out.println(list.getFirst());
//        System.out.println(list.getLast());

        // TODO 获取数据(遍历数据)
        //System.out.println(list.get(1));
//        for ( int i = 0; i < list.size(); i++) {
//            //System.out.println(list.get(i));
//        }
//
//        for (Object obj : list) {
//            System.out.println(obj);
//        }
        // TODO 修改数据
        //list.set(1,"zhaoliu");

        // TODO 删除数据
        list.remove("wangwu");

        // TODO 打印集合的数据
        System.out.println(list);
 // LinkedList : Linked(连接) + List
        // 构建集合对象
        LinkedList list = new LinkedList();

        // 追加数据
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");

        // 向指定位置增加数据
//        list.add(1,"zhaoliu");
//        list.addFirst("1");
//        list.addLast("2");
//        LinkedList list1 = new LinkedList();
//        list1.add("zhangsan1");
//        list1.add("lisi2");
//        list1.add("wangwu3");
//        list.addAll(list1);

//        System.out.println(list.remove("1"));
//        System.out.println(list.remove());  // 删除第一个
//        list.removeFirst();
//        list.removeLast();
//        list.remove(2);

        //System.out.println(list.size());
        //System.out.println(list.isEmpty());
        //list.clear();
        //list.contains( "1" );
        //System.out.println(list.element());  // 获取第一个数据
        //System.out.println(list.indexOf(""));
        //System.out.println(list.lastIndexOf(""));
        list.push("aaa");  // 添加数据至第一个
        // poll是队列 数据结构 实现类的方法,从队首获取元素,同时获取的这个元素将从原队列删除;
        // pop是栈结构的实现类的方法,表示返回栈顶的元素,同时该元素从栈中删除,当栈中没有元素时,调用该方法会发生异常
        //System.out.println(list.pop());  // 弹出第一个数据并返回弹出的值
        System.out.println(list.poll());  //获取第一个元素并删除

        System.out.println(list);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值