• 2022-08-06 第四小组 修身课 学习笔记(every day)


    List

    数据是有顺序(添加的先后顺序)的,数据是可以重复。
         ArrayList:内部结构是数组。比较适合做高频率的查找,遍历。
         LinkedList:双向链表。比较适合做高频率的新增和删除。
         Vector:和ArrayList几乎一模一样。
    面试题:
    1.Collection和Map接口的区别
    2.ArrayList和LinkedList的区别
    3.ArrayList和Vector的区别

    1. public class Ch01 {
    2. public static void main(String[] args) {
    3. // List list = new LinkedList<>();
    4. LinkedList list = new LinkedList<>();
    5. list.add("a");
    6. list.add("b");
    7. list.add("c");
    8. list.add("d");
    9. // 我们在创建对象的时候用的是多态
    10. // 父类对象---子类引用
    11. // 我们创建出来的对象只能够调用父类和子类中都有的方法
    12. list.addFirst("z");
    13. list.addLast("x");
    14. list.removeFirst();
    15. list.removeLast();
    16. // 根据下标索引获取指定位置的元素
    17. System.out.println(list.get(2));
    18. System.out.println(list);
    19. }
    20. }

    Collection接口


     List:有顺序,元素可以重复,顺序指的是添加的先后顺序
     Set:没有顺序,元素不可以重复,顺序指的是添加的先后顺序
         Set其实是有顺序,内部有一个专门排序的算法。
         1.所谓的无序不等于随机
         2.所谓的无序指的是没有按照添加的先后顺序,其实内部是做了排序的。
     面试题:
     1.List和Set的区别
     2.HashSet和LinkedHashSet的区别和联系


    TreeSet
    排序规则:
     要排序的对象的类必须实现Comparable接口

    LinkedHashSet:在添加数据的同时维护数据的添加顺序
     效率要比HashSet略低一些。


    比较接口:
    Comparable接口:自然排序,排序规则是固定。
    Comparator接口:临时排序

    1. public class Ch06 {
    2. public static void main(String[] args) {
    3. List list = new ArrayList<>(16);
    4. list.add(new Person("张岳",1100));
    5. list.add(new Person("李四",1010));
    6. list.add(new Person("刘海柱",1020));
    7. // list.sort(new Comparator() {
    8. // @Override
    9. // public int compare(Person o1, Person o2) {
    10. // return 0;
    11. // }
    12. // });
    13. list.sort((o1,o2) -> {
    14. if(o1.getId() < o2.getId()){
    15. return -1;
    16. }
    17. if(o1.getId().equals(o2.getId())){
    18. return 0;
    19. }
    20. return 1;
    21. });
    22. System.out.println(list);
    23. }
    24. }

    Iterator迭代器

    Iterator主要用于迭代访问(即遍历)Collection中的元素,JDK专门提供一个接口java.util.Iterator

    1、迭代

    即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把

    这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种

    取出方式专业术语称为迭代。

     迭代器对象Iterator中的方法

    boolean hasNext()如果仍有元素可以迭代,则返回true

    Object next() 返回迭代的下一个元素


    Map接口


    1.存储对值K-V key-value
    2.key不能重复,value是可以重复的
    3.没有顺序(添加的先后顺序)
    HashMap内部存储结构:
    jdk1.7之前:链表 + 数组
    jdk1.7及之后:链表 + 数组 + 红黑树
    HashMap基本上面试90%问原理!!!
     

    1. public class Ch07 {
    2. public static void main(String[] args) {
    3. Map map = new HashMap<>();
    4. map.put("1001","张岳");
    5. map.put("1002","赵红兵");
    6. map.put("1003","小北京");
    7. map.put("1004","李四");
    8. map.put("1004","张浩然");
    9. map.put("1005","张浩然");
    10. System.out.println(map);
    11. System.out.println(map.get("1003"));
    12. System.out.println(map.values());
    13. System.out.println(map.keySet());
    14. }
    15. }

    Hashtable和HashMap几乎一模一样
    面试题:
    Hashtable和HashMap的区别
    1.HashMap是线程异步,线程不安全的,Hashtable是线程同步,线程安全
    2.HashMap的key是可以为null的,Hashtable是不可以为null

    Properties:属性
    Properties是Hashtable的子类,更多地是用来操作属性文件。

    其他的集合:
    1.LinkedHashMap,在HashMap的基础上维护了一个双向链表。
    2.TreeMap:天然支持排序
    3.Collections:Collections是一个工具类 


    集合需要掌握的


    1.如何创建需要的集合。多态
    2.主要用到的是List和Map
    3.各种区别?
    4.各种集合API的调用
    5.两个比较接口
    6.各种集合的特点,从接口层面,到实现类层面
    7.重点集合的内部结构。ArrayList,HashSet,HashMap
    8.各种集合的遍历
    9.并发问题


    最重要的集合:
    ArrayList、HashMap

  • 相关阅读:
    小程序毕设作品之微信二手交易小程序毕业设计成品(4)开题报告
    MSDC 4.3 接口规范(5)
    Java @Data注解 的使用
    2022云栖现场|体验阿里巴巴工作数字化实践
    冯唐成事心法笔记 —— 知世
    muduo源码剖析之InetAddress
    采用cv2和默认的人脸识别分类器实现人脸检测功能
    MOOC_Java进阶_翁恺讲_第三周题
    TCP 和 UDP 可以同时绑定相同的端口吗?
    计算机毕业设计node.js+Vue+Element电商后台管理系统
  • 原文地址:https://blog.csdn.net/weixin_45777469/article/details/126201640