【java进阶09:集合】泛型、增强for、Collections集合工具类
目录
集合
Collection
List
泛型
增强for(foreach)
Set简述
Map
java.util.Collections集合工具类
复习review
集合
-
集合概述
-
什么是集合?有什么用?
数组实际上就是一个集合。集合实际上就是一个容器,可以来容纳其他类型的数据。
集合为什么在开发中使用的比较多?
集合是一个容器,是一个载体,可以一次容纳多个对象。在实际开发中,假设连接数据库,数据库当中有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;
-
-
-
总结重点
- 把集合继承结构图背会
- 把Collection接口中的常用方法测试几遍
- 把迭代器弄明白
- Collection接口中的remove方法和contains方法底层都会调用equals。
-
集合的继承结构图
-
Iterable–Collection
-
Map
-
-
关于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
List
泛型
增强for(foreach)
Set简述
Map
java.util.Collections集合工具类
复习review
集合
-
集合概述
-
什么是集合?有什么用?
数组实际上就是一个集合。集合实际上就是一个容器,可以来容纳其他类型的数据。
集合为什么在开发中使用的比较多?
集合是一个容器,是一个载体,可以一次容纳多个对象。在实际开发中,假设连接数据库,数据库当中有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;
-
-
-
总结重点
- 把集合继承结构图背会
- 把Collection接口中的常用方法测试几遍
- 把迭代器弄明白
- Collection接口中的remove方法和contains方法底层都会调用equals。
-
集合的继承结构图
-
Iterable–Collection
-
Map
-
Collection
-
关于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{}
-
关于集合遍历/迭代的专题
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
-