系列文章目录
Java核心技术卷一 -第一章:java“白皮书”的关键术语
Java核心技术卷一 -第三章:数据类型
Java核心技术卷一 -第三章:变量与常量
Java核心技术卷一 -第三章:运算符
Java核心技术卷一 -第三章:字符串
Java核心技术卷一 -第三章:输入与输出
Java核心技术卷一 -第三章:数组
Java核心技术卷一 -第四章:类之间的关系-依赖
Java核心技术卷一 -第四章:预定义类-LocalDate类小应用
Java核心技术卷一 -第四章:构造器
Java核心技术卷一 -第四章:null引用
Java核心技术卷一 -第四章:方法参数
Java核心技术卷一 -第四章:对象构造
Java核心技术卷一 -第五章:覆盖方法与super
Java核心技术卷一 -第五章:super关键字
Java核心技术卷一 -第五章:类的强制类型转换与instanceof操作符
Java核心技术卷一 -第五章:抽象类与abstract关键字
Java核心技术卷一 -第五章:Object类的toString方法
Java核心技术卷一 -第五章:数组列表初识
Java核心技术卷一 -第五章:装箱和拆箱
Java核心技术卷一 -第五章:枚举类再认识
Java核心技术卷一 -第七章:异常
前言
本人为java初学者,文章内容仅为个人学习总结分享,其中包含了大量Java核心技术卷一里面的文章内容以及一些网站文章内容,由于参考文章过多,在此并不一一列出,如有侵权,请联系删除。
一、集合概述
1.1、什么是集合?有什么用?
数组其实就是一个集合。集合实际上就是一个容器。可以来容纳其它类型的数据。
集合为什么说在开发中使用较多?
集合是一个容器,是一个载体,可以一次容纳多个对象。在实际开发中,假设连接数据库,数据库当中有10条记录,那么假设把这10条记录查询出来,在java程序中会将10条数据封装成10个java对象,然后将10个java对象放到某一个集合当中,将集合传到前端,然后遍历集合,将一个数据一个
数据展现出来。
1.2、集合不能直接存储基本数据类型,另外集合也不能直接存储java对象
集合当中存储的都是java对象的内存地址。(或者说集合中存储的是引用。)
list.add(100);//自动装箱Integer,里面存储的并不是100,而是一个装箱对象
注意:
- 集合在java中本身是一个容器,是一个对象,其也有内存地址。同样也可能有某一个变量指向集合,里面存储着集合的地址。
- 集合中任何时候存储的都是“引用”。
图示:
1.3、在java中每一个不同的集合,底层会对应不同的数据结构
往不同的集合中存储元素,等于将数据放到了不同的数据结构当中。什么是数据结构?数据存储的结构就是数据结构。不同的数据结构,数据存储方式不同。
例如:数组、二叉树、链表、哈希表,,,,,,,
以上这些都是常见的数据结构。
你往集合1中放数据,可能是放到数组上了
你往集合2中放数据,可能是放到二叉树上了。
你使用不同的集合等同于使用了不同的数据结构。
提示:
在java集合这一章节,需要掌握的不是精通数据结构。java中已经将数据结构实现了,已经写好了这些常用的集合类,我们只需要掌握怎么用?在什么情况下选择哪一种合适的集合去使用即可。
new ArrayList();创建一个集合,底层是数组.
new LinkedList();创建一个集合对象,底层是链表.
new Treeset();创建一个集合对象,底层是二又树.
1.4、集合在java JDK中哪个包下?
java.util.*;
所有的集合类和集合接口都在java.util包下。
1.5、在java中集合分为两大类
一类是单个方式存储元素:
单个方式存储元素,这一类集合中超级父接口:java.util.Collection;
一类是以键值对儿的方式存储元素:
以键值对的方式存储元素,这一类集合中超级父接口:java.util.Map;
1.6、集合的继承结构图
Collection类:
提示:Collection通过调用Iterable中的iterator方法可以得到一个Iterator迭代器
Map类:
1.7、小总结
二、Collection接口类
2.1、Collection接口的常用方法
关于java.util.Collection接口中常用的方法:
Collection中能存放什么元素?
没有使用“泛型”之前,Collection中可以存储Object的所有子类型。使用了“泛型”之后,Collection中只能存储某个具体的类型。
集合后期我们会学习“泛型语法。目前先不用管。Collection中什么都能存。
只要是Object的子类型就行。(集合中不能直接存储基本数据类型,也不能存java对象,只是存储java对象的内存地址。)
Collection中的常用方法
boolean add(Object e)向集合中添加元素
int size()获取集合中元素的个数
void clear()清空集合
boolean contains(object o)判断当前集合中是否包含元素。,包含返回true,不包含返回false boolean
remove(object o)删除集合中的某个元素
boolean isEmpty()判断该集合中元素的个数是否为0
object[]toArray()调用这个方法可以把集合转换成数组
代码展示:
import java.util.ArrayList;
import java.util.Collection;
public class Test02 {
public static void main(String[] args) {
//创建一个集合对象
//Collection c = new Collection();//接口是抽象的,无法实例化。
//多态
Collection c = new ArrayList();
//测试Collection接口中的常用方法
c.add(1200);//自动装箱(java5的新特性。),实际上是放进去了一个对象的内存地址。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());//0
//再向集合中添加元素
c.add("hello");
c.add("world");
c.add("飞机");
c.add("飞上天");
c.add(1);
//判断集合中是否包含“飞机”
boolean flag=c.contains("飞机");//true
System.out.println(flag);
//判断集合中是否包含“飞机2”
boolean flag2=c.contains("飞机2");//false
System.out.println(flag2);
//删除集合中某个元素
c.remove(1);
System.out.println("集合中元素的个数是:"+c.size());//4
//判断集合是否为空(集合中是否存在元素)
System.out.println(c.isEmpty());//false
//清空
c.clear();
System.out.println(c.isEmpty());//true(true表示集合中没有元素了!)
c.add("abc");
c.add("def");
c.add(100);
c.add("helloworld!");
c.add(new Student());
//转换成数组
Object[] objs=c.toArray();
for (int i=0;i< objs.length;i++){
//遍历数组
Object o=objs[i];
System.out.println(o);
}
}
}
class Student{
}
结果:
2.2、迭代器
代码展示:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Test02 {
public static void main(String[] args) {
//注意:以下讲解的遍历方式/迭代方式,是所有Collection通用的一种万式,
//Map集合中不能用。在所有的Collection以及子类中使用。
//创建一个集合对象
Collection c = new ArrayList();
//添加元素
c.add("abc");
c.add("def")