0
点赞
收藏
分享

微信扫一扫

Java SE : 第14章 集合

以沫的窝 2022-01-10 阅读 43

14.1.1 数组和集合

名称长度
数组长度开始必须指定,且不能更改1. 保存必须为同一类型元素
  1. 进行增加 / 删除元素,比较麻烦 | | 集合 | 动态保存任意多个对象 | 1. 提供了一系列方便的操作对象的方法:add、remove、set、get等

  2. 使用集合添加,删除新元素,简洁明了 |

14.2 集合的框架体系

  • Java 的集合类很多,主要分为两大类,如图 :[最好背下来]

 

14.3 Collection 接口和常用方法

14.3.1 Collection 接口实现类的特点

  1. collection 实现子类可以存放多个元素,每个元素可以是 Object

  2. Collection 接口没有直接的实现子类,是通过它的子接口 Set 和 List 来实现的

  • 有些 Collection 的实现类,可以存放重复的元素,有些不可以

  • 有些 Collection 的实现类,有些是有序的 (List),有些不是有序的 (Set)

14.3.2 Collection 接口遍历元素方式 1-使用 Iterator(迭代器)

  • 案例演示

     public static void main(String[] args) {
         Collection col = new ArrayList();
         col.add(new Book("三国演义", "罗贯中", 10.1));
         col.add(new Book("小李飞刀", "古龙", 5.1));
         col.add(new Book("红楼梦", "曹雪芹", 34.6));
         
         //现在老师希望能够遍历 col 集合
         //1. 先得到 col 对应的 迭代器
         Iterator iterator = col.iterator();
         //2. 使用 while 循环遍历
         // while (iterator.hasNext()) {//判断是否还有数据
         // //返回下一个元素,类型是 Object
         // Object obj = iterator.next();
         // System.out.println("obj=" + obj);
         // }
         //老师教大家一个快捷键,快速生成 while => itit
         //显示所有的快捷键的的快捷键 ctrl + j
         while (iterator.hasNext()) {
             Object obj = iterator.next();
             System.out.println("obj=" + obj);
         }
         //3. 当退出 while 循环后 , 这时 iterator 迭代器,指向最后的元素
         // iterator.next();//NoSuchElementException
         //4. 如果希望再次遍历,需要重置我们的迭代器
         iterator = col.iterator();
         System.out.println("===第二次遍历===");
         while (iterator.hasNext()) {
             Object obj = iterator.next();
             System.out.println("obj=" + obj);
         }
     }

14.3.3 Collection 接口遍历对象方式 2-for 循环增强

  • 案例演示

     public static void main(String[] args) {
         List list = new ArrayList();
         list.add(new Dog("小黑", 3));
         list.add(new Dog("大黄", 100));
         list.add(new Dog("大壮", 8));
         
         //先使用 for 增强
         for (Object dog : list) {
             System.out.println("dog=" + dog);
         }
         //使用迭代器
         System.out.println("===使用迭代器来遍历===");
         Iterator iterator = list.iterator();
         while (iterator.hasNext()) {
             Object dog = iterator.next();
             System.out.println("dog=" + dog);
         }
     }

14.4 List 接口和常用方法

  • 案例演示

     //1. List 集合类中元素有序(即添加顺序和取出顺序一致)、且可重复 [案例]
     List list = new ArrayList();
     list.add("jack");
     list.add("tom");
     list.add("mary");
     list.add("hsp");
     list.add("tom");
     System.out.println("list=" + list);
     //2. List 集合中的每个元素都有其对应的顺序索引,即支持索引
     // 索引是从 0 开始的
     System.out.println(list.get(3));//hsp

14.4.1 List 的三种遍历方式 [ArrayList, LinkedList,Vector]

  • 案例演示

     //List 接口的实现子类 Vector LinkedList
     //List list = new ArrayList();
     //List list = new Vector();
     List list = new LinkedList();
     list.add("jack");
     list.add("tom");
     list.add("鱼香肉丝");
     list.add("北京烤鸭子");
     //遍历
     //1. 迭代器
     Iterator iterator = list.iterator();
     while (iterator.hasNext()) {
         Object obj = iterator.next();
         System.out.println(obj);
     }
     System.out.println("=====增强 for=====");
     //2. 增强 for
     for (Object o : list) {
         System.out.println("o=" + o);
     }
     System.out.println("=====普通 for====");
     //3. 使用普通 for
     for (int i = 0; i < list.size(); i++) {
         System.out.println("对象=" + list.get(i));
     }

14.5 ArrayList 底层结构和源码分析

14.5.1 ArrayList 的注意事项

14.5.2 ArrayList 的底层操作机制源码分析(重点,难点.)

14.6 Vector 底层结构和源码剖析

14.6.1 Vector 的基本介绍

14.6.2 Vector 和 ArrayList 的比较

底层结构版本线程安全(同步)效率扩容倍数
ArrayList可变数组jdk1.2不安全,效率高如果有参构造1.5倍
如果是无参
  1. 第一次 10

  2. 从第二次开始按1.5倍扩容 | | Vector | 可变数组Object[] | jdk1.0 | 安全,效率不高 | 如果是无参,默认10,满后,就按2倍扩容 如果指定大小,则每次直接按2倍扩容 |

14.7 LinkedList 底层结构

14.7.1 LinkedList 的全面说明

14.7.2 LinkedList 的底层操作机制

14.8 ArrayList 和 LinkedList 比较

底层结构增删的效率改查的效率
ArrayList可变数组较低,通过数组扩容较高
LinkedList双向链表较高,通过链表追加较低

14.9 Set 接口和常用方法

14.9.1 Set 接口基本介绍

14.9.2 Set 接口的遍历方式

14.10 Set 接口实现类-HashSet

14.10.1 HashSet 底层机制说明

14.11 Set 接口实现类-LinkedHashSet

14.11.1 LinkedHashSet 的全面说明

14.12 Map 接口和常用方法

14.12.1 Map 接口实现类的特点 [很实用]

14.13 Map 接口实现类-HashMap

14.13.1 HashMap 小结

14.13.2 HashMap 底层机制及源码剖析

14.14 Map 接口实现类-Hashtable

14.14.1 HashTable 的基本介绍

14.14.2 Hashtable 和 HashMap 对比

版本线程安全(同步)效率允许null键null值
HashMap1.2不安全可以
Hashtable1.0安全较低不可以

14.15 Map 接口实现类-Properties

14.15.1 基本介绍

14.16总结-开发中如何选择集合实现类(记住)

14.17 Collections 工具类总结

14.17.1 Collections 工具类介绍

14.17.2 排序操作:(均为 static 方法)

功能
reverse(List)反转 List 中元素的顺序
shuffle(List)对 List 集合元素进行随机排序
sort(List)根据元素的自然顺序对指定 List 集合元素按升序排序
sort(List, Comparator)根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
swap(List, int, int)将指定 list 集合中的 i 处元素和 j 处元素进行交换

14.17.3 查找、替换

功能
Object max(Collection)根据元素的自然顺序,返回给定集合中的最大元素
Object max(Collection,Comparator)根据 Comparator 指定的顺序,返回给定集合中的最大元素
Object min(Collection)根据元素的自然顺序,返回给定集合中的最小元素
Object min(Collection,Comparator)根据 Comparator 指定的顺序,返回给定集合中的最小元素
int frequency(CollectionObject)返回指定集合中指定元素的出现次数
void copy(List dest,List src)将src中的内容复制到dest中
boolean replaceAll (List list,Object oldVal,Object newVal)使用新值替换 List 对象的所有旧值

举报

相关推荐

0 条评论