> 文章列表 > 【java进阶09:集合】泛型、增强for、Collections集合工具类

【java进阶09:集合】泛型、增强for、Collections集合工具类

【java进阶09:集合】泛型、增强for、Collections集合工具类

目录

集合

Collection

List

泛型

增强for(foreach)

Set简述

Map

java.util.Collections集合工具类

复习review


集合

  1. 集合概述

    • 什么是集合?有什么用?

      数组实际上就是一个集合。集合实际上就是一个容器,可以来容纳其他类型的数据。

      集合为什么在开发中使用的比较多?

      集合是一个容器,是一个载体,可以一次容纳多个对象。在实际开发中,假设连接数据库,数据库当中有10条记录,那么假设把这10条记录查询出来,在java程序中会将10条数据封装成10个java对象,然后将10个java对象放到某一个集合当中,将集合传到前端,然后遍历集合,将一个数据一个数据展现出来。

    • 集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,集合当中存储的都是java对象的内存地址。(或者说集合中存储的是引用)

      list.add(100);//自动装箱Integer
      注意:集合在java中本身是一个容器,是一个对象。集合中任何时候存储的都是“引用”集合中也可以存储集合
      

      在这里插入图片描述

    • 在java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素,等于将数据放到了不同的数据结构当中。数据结构:数据存储的结构就是数据结构。不同的数据结构,数据存储方式不同。例如:数组、二叉树、链表、哈希表······,以上这些都是常见的数据结构。

      你往集合c1中放数据,可能是放到数组上了。

      你往集合c2中放数据,可能是放到二叉树上了。

      需要掌握的:不是精通数据结构。java中已经将数据结构实现了,已经写好了这些常用的集合类,你只需要掌握怎么用。在什么情况下选择哪一种合适的集合去使用即可。

      new ArrayList();  //创建一个集合对象,底层是数组。
      new LinkedList(); //创建一个集合对象,底层是链表。
      new TreeSet(); 	  //创建一个集合对象,底层是二叉树。
      
    • 集合在java JDK 的哪个包下?

      java.util.*; 所有的集合类和集合接口都在这个包下。

    • 为了更好的掌握集合,最好可以将集合的继承结构图背会!

      集合的整个体系是什么样的结构

    • 在java中集合分为两大类:

      • 一类是单个方式存储元素:

        单个方式存储元素,这一类集合中超级父接口:java.util.Collection;

      • 一类是以键值对儿的方式存储元素:

        以键值对的方式春初元素,这一类集合汇总超级父接口:java.util.Map;

  2. 总结重点

    • 把集合继承结构图背会
    • 把Collection接口中的常用方法测试几遍
    • 把迭代器弄明白
    • Collection接口中的remove方法和contains方法底层都会调用equals。
  3. 集合的继承结构图

    • Iterable–Collection

      在这里插入图片描述

    • Map

      在这里插入图片描述

  4. 关于java.util.Collection接口中常用的方法

    package Collection;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    
    /*关于java.util.Collection接口中常用的方法:
    1、Collection中能存放什么元素?没有使用“泛型”之前,Collection中可以存放Object的所有子类型,使用了“泛型”之后,Collection中只能存储某个具体的类型。集合

    【java进阶09:集合】泛型、增强for、Collections集合工具类

    目录

    集合

    Collection

    List

    泛型

    增强for(foreach)

    Set简述

    Map

    java.util.Collections集合工具类

    复习review


    集合

    1. 集合概述

      • 什么是集合?有什么用?

        数组实际上就是一个集合。集合实际上就是一个容器,可以来容纳其他类型的数据。

        集合为什么在开发中使用的比较多?

        ​ 集合是一个容器,是一个载体,可以一次容纳多个对象。在实际开发中,假设连接数据库,数据库当中有10条记录,那么假设把这10条记录查询出来,在java程序中会将10条数据封装成10个java对象,然后将10个java对象放到某一个集合当中,将集合传到前端,然后遍历集合,将一个数据一个数据展现出来。

      • 集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,集合当中存储的都是java对象的内存地址。(或者说集合中存储的是引用)

        list.add(100);//自动装箱Integer
        注意:集合在java中本身是一个容器,是一个对象。集合中任何时候存储的都是“引用”集合中也可以存储集合
        

        在这里插入图片描述

      • 在java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素,等于将数据放到了不同的数据结构当中。数据结构:数据存储的结构就是数据结构。不同的数据结构,数据存储方式不同。例如:数组、二叉树、链表、哈希表······,以上这些都是常见的数据结构。

        你往集合c1中放数据,可能是放到数组上了。

        你往集合c2中放数据,可能是放到二叉树上了。

        需要掌握的:不是精通数据结构。java中已经将数据结构实现了,已经写好了这些常用的集合类,你只需要掌握怎么用。在什么情况下选择哪一种合适的集合去使用即可。

        new ArrayList();  //创建一个集合对象,底层是数组。
        new LinkedList(); //创建一个集合对象,底层是链表。
        new TreeSet(); 	  //创建一个集合对象,底层是二叉树。
        
      • 集合在java JDK 的哪个包下:

        java.util.*; 所有的集合类和集合接口都在这个包下。

      • 为了更好的掌握集合,最好可以将集合的继承结构图背会!

        集合的整个体系是什么样的结构

      • 在java中集合分为两大类:

        • 一类是单个方式存储元素:

          单个方式存储元素,这一类集合中超级父接口:java.util.Collection;

        • 一类是以键值对儿的方式存储元素:

          以键值对的方式春初元素,这一类集合汇总超级父接口:java.util.Map;

    2. 总结重点

      • 把集合继承结构图背会
      • 把Collection接口中的常用方法测试几遍
      • 把迭代器弄明白
      • Collection接口中的remove方法和contains方法底层都会调用equals。
    3. 集合的继承结构图

      • Iterable–Collection

        在这里插入图片描述

      • Map

        在这里插入图片描述

    Collection

    1. 关于java.util.Collection接口中常用的方法

      package Collection;import java.util.ArrayList;
      import java.util.Collection;
      import java.util.Collections;/*关于java.util.Collection接口中常用的方法:1、Collection中能存放什么元素?没有使用“泛型”之前,Collection中可以存放Object的所有子类型,使用了“泛型”之后,Collection中只能存储某个具体的类型。集合后期我们会学习“泛型”语法,目前先不用管。Collection中什么都能存,只要是Object的子类型就行注意:集合中  不能直接存储基本数据类型,也不能存储java对象,只是存储java对象的内存地址。2、Collection中的常用方法:boolean add(Object e)   向集合中添加元素int size()  获取集合中元素的个数void clear()    清空集合boolean contains(Object o) 判断当前集合中是否包含元素o,包含返回true,不包含返回falseboolean remove(Object o)    删除集合中的某个元素boolean isEmpty()   判断集合中元素的个数是否为0Object[] toArray()  调用这个方法可以把集合转换为数组。——作为了解,使用不多*/
      public class CollectionText01 {public static void main(String[] args){//创建一个集合对象//Collection c = new Collection();    //接口是抽象的,无法实例化对象//多态Collection c = new ArrayList();//测试Collection接口中的常用方法c.add(1200);    //自动装箱,实际上是放进去了一个对象的内存地址。Integer x = new Integer(1200);c.add(3.14);    //自动装箱c.add(new Object());c.add(new Student());c.add(true);    //自动装箱//获取集合中元素的个数System.out.println("集合中元素的个数:"+c.size());   //5//清空集合c.clear();System.out.println("集合中元素的个数:"+c.size());//再向集合中添加元素c.add("hello");c.add("world");c.add("坦克");c.add("绿帽子");c.add(1);//判断集合中是否包含“绿帽子”boolean flag = c.contains("绿帽子");System.out.println(flag);   //trueboolean flag2 = c.contains("绿帽子2");System.out.println(flag2);   //falseSystem.out.println(c.contains(1));  //trueSystem.out.println("集合中元素的个数:"+c.size());//5//删除集合中的某个元素c.remove(1);System.out.println("集合中元素的个数:"+c.size());//4//判断集合是否为空(集合中是否存在元素)System.out.println(c.isEmpty());    //false//清空c.clear();System.out.println(c.isEmpty());    //true(表示结合中没有元素了)c.add("abc");c.add("def");c.add(100);c.add("hello world");c.add(new Student());//转换成数组(了解,使用不多)Object[] objs = c.toArray();for(int i = 0 ; i < objs.length ;i++){//遍历数组System.out.println(objs[i]);}}
      }class Student{}
    2. 关于集合遍历/迭代的专题

      package Collection;//关于集合遍历/迭代的专题(*重点*)import java.util.ArrayList;
      import java.util.Collection;
      import java.util.Iterator;public class CollectionText02 {public static void main(String[] args) {//注意:以下讲解的遍历/迭代方式,是所有Collection通用的一种方式,在所有的Collection以及子类中使用。在Map集合中不能使用//创建集合对象Collection c = new ArrayList();//后面的集合无所谓,主要是看前面的Collection接口,怎么遍历/迭代。//添加元素c.add("abc");c.add("def");c.add(100);c.add(new Object());//对集合Collection进行遍历/迭代//第一步:获取集合对象的迭代器对象IteratorIterator it = c.iterator();//第二步:通过以上获取的迭代器对象开始迭代/遍历集合/*以下两个方法是迭代器对象Iterator中的方法:boolean hasNext()如果仍有元素可以迭代,则返回true。Object next() 返回迭代的下一个元素。*///使用while循环代替while(it.hasNext()){Object obj = it.next();System.out.println(obj);}/* boolean hasNext = it.hasNext();System.out.println(hasNext);if(hasNext) {Object obj = it.next();System.out.println(obj);}hasNext = it.hasNext();System.out.println(hasNext);if(hasNext) {Object obj = it.next();System.out.println(obj);}hasNext = it.hasNext();System.out.println(hasNext);if(hasNext) {Object obj = it.next