24/04/04总结

本文详细介绍了Java中的Collection、List和Set等集合类型,包括它们的特点、方法以及如何使用迭代器、增强for和lambda表达式进行遍历。特别提到自定义对象时equals方法的重要性。同时,还提到了LinkedList的独特性能特点。
摘要由CSDN通过智能技术生成

集合:

 

单列集合:Collection
双列集合:Map
单列集合:每次添加只添加一个
双列集合:每次添加添加一对

list系列集合:添加的元素是有序(指的是存和取的顺序是有序的不是排序)、可重复、有索引的
Set系列集合:添加的元素是无序(指存的和取的顺序有可能不一样)、不重复、无索引
Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的
add(E e):添加,clear():清除,remove():删除(这里的remove是不能根据索引删的因为父类Collection是共性的,set是没索引的)
contains(object obj):判断当前集合中是否包含给定的对象
isEmpty():判断当前集合是否为空,size():返回元素个数
 //注意点:Collection是一个接口,我们不能直接创建他的对象
        Collection <String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        System.out.println(coll);
        coll.clear();
        System.out.println(coll);
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.remove("bbb");
        System.out.println(coll);
        System.out.println("-------------");
        System.out.println(coll.contains("aaa"));

输出:
 

注意点:

细节:contains底层是依赖equals方法进行判断是否存在的。
所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中,一定要重写equals方法。
如果存的是自定义对象,没有重写equals方法,那么默认使用object类中的equals方法进行判断,
而object类中equals方法,依赖地址值进行判断
equals重写:
  

Collection的遍历方式:
1.迭代器遍历
2.增强for遍历
3.lambda表达式遍历

 //迭代器遍历:
        Collection <Integer> arr = new ArrayList<>();
        arr.add(111);
        arr.add(222);
        arr.add(333);
        //Iterator 迭代器,hasNext判断指针域是否为空
        Iterator<Integer> it = arr.iterator();
        while(it.hasNext()){
            System.out.println(it.next());      //输出并移动
        }
增强for遍历
增强for的底层就是迭代器,为了简化迭代器的代码书写的。
它是IDK5之后出现的,其内部原理就是一个Iterator迭代器
所有的单列集合和数组才能用增强for进行遍历。
格式: for(元素的数据类型 变量名:数组或者集合){
          }
  Collection <String> coll1 = new ArrayList<>();
        coll1.add("张三");
        coll1.add("李四");
        coll1.add("王五");
        for(String s : coll1){          //快捷键:coll1.for
            System.out.println(s);
        }
 //Lambda表达式遍历:
        Collection <String> coll2 = new ArrayList<>();
        coll2.add("zhangsan");
        coll2.add("lisi");
        coll2.add("wangwu");
        coll2.forEach(s -> System.out.println(s));

输出结果:

List集合的特点
有序:存和取的元素顺序一致
有索引:可以通过索引操作元素
可重复:存储的元素可以重复
collection的方法List都继承了
List集合因为有索引,所以多了很多索引操作的方法。
例如:add(int index,E e):在指定位置插入元素,remove(int index):删除指定索引的元素,返回被删除的元素
set(int index,E e):修改指定索引的元素,返回被修改的元素,get(int index):返回指定索引的元素

 

 List<String> list = new ArrayList<>();       //List也是接口所以不能new LIst
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        System.out.println(list);
        list.add(1,"qqq");
        System.out.println(list);
        list.remove("aaa");
        System.out.println(list);
        //手动装箱remove
        List<Integer> arr = new ArrayList<>();
        arr.add(1);
        arr.add(2);
        arr.add(3);
        Integer i = Integer.valueOf(1);
        arr.remove(i);
        System.out.println(arr);
        //List的遍历方式:在Collection的基础上还有普通for循环,列表迭代器遍历
        //列表迭代器:(和迭代器的区别是额外多了个方法:可以添加元素(add),但是要用迭代器添加不然会报错)
        ListIterator <String> it = list.listIterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
五种遍历方式对比
迭代器遍历      //在遍历的过程中需要删除元素,请使用迭代器
列表迭代器     //在遍历的过程中需要添加元素,请使用列表迭代器
增强for遍历
Lambda表达式
仅仅想遍历,那么使用增强for或Lambda表达式
普通for
如果遍历的时候想操作索引,可以用普通for

LinkedList集合
底层数据结构是双链表,查询慢,增删快,但是如果操作的是首尾元素,速度也是极快的
特有方法                                   //说明
public void addFirst(E e)                  //在该列表开头插入指定的元素
public void addLast(E e)                  //将指定的元素追加到此列表的末尾
public E getFirst()                       //返回此列表中的第一个元素
public E getLast()                        //返回此列表中的最后一个元素
public E removeFirst()                    //从此列表中删除并返回第一个元素
public E removeLast()                     //从此列表中删除并返回最后一个元素
  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值