一.集合与数组
1.集合与数组存储数据概述
- 集合与数组都是对多个数据进行存储操作的结构,简称Java容器
说明:
此时的存储主要是指内存层面的存储,不涉及持久化存储
2.数组存储的特点
- 数组一旦初始化后,长度确定,不可更改
- 数组一定定义好之后,元素的数据类型确定,因此只能操作指定数据类型的数据
如: String [] arr;
int [] arr1;
Object [] arr2;
3.数组存储的弊端
- 初始化后,长度不可修改
- 数组中提供的方法有限,对添加,删除,插入等操作非常不方便,效率不高
- 获取数组中实际元素,没有现成的属性或方法
- 数组对无序,不可重复数据不可操作
二.集合概念引入
- Collection是一个容器,Array也是一个容器
- Array指定了存储空间,且是空间连续,长度不可变的容器
Array有索引值,查询方便,但是插入,删除缓慢
eg:
用户注册时
User对象 --> 数组(长度为固定值) --> 存储满之后需要重新创建数组
三.为什么要有集合?
- 实际开发中,数据数量是变化的,这时就需要一个动态容器来存储数据
- 不同数据结构不同,因此,java中就提供了许多不同类型的集合类
四.集合API
集合概述
集合就是容器,以不同结构来存储数据
操作有 增,删,改,查
集合体系概述
Java集合框架由许多接口,抽象类,具体类组成,位于java,util包中
五.集合与泛型的联系
Collection
- 集合可以使用泛型向集合中传入参数(数据类型),默认为Object类型,
- 集合必须存储引用类型,因此存储时使用自动装箱转换为包装类,但如果需要向下转型时就会变得很复杂
- 此时,引出泛型的概念,使一个集合存储一类数据
Collection<String> c = new ArrayList<String>();
六.Collection中的常用方法
①添加元素
c.add("a");
c.add("b");
c.add("c");
c.add("a");
c.add("d");
System.out.println(c);
②清空集合
c.clear();
System.out.println(c);
③删除指定的元素,且只删除第一次出现的
System.out.println(c.remove("a"));
④判断是否包含指定元素
System.out.println(c.contains("d"));
⑤判断集合是否为空
System.out.println( c.isEmpty());
⑥获取集合长度
System.out.println(c.size());
⑦转换类型
Object[] objects = c.toArray(); //默认转换为Object类
System.out.println(Arrays.toString(objects));
String[] strings = c.toArray(new String[c.size()]);
System.out.println(Arrays.toString(strings));
⑧XXXAll()
Collection<String> c = new ArrayList<String>();
c.add("a");
c.add("b");
c.add("c");
c.add("d");
Collection<String> c1 = new ArrayList<String>();
c1.add("a");
c1.add("b");
c1.add("c");
//添加后面集合中的所有元素到前面集合
System.out.println(c.addAll(c1));
System.out.println(c);
//删除c1在c中的内容
System.out.println(c.removeAll(c1));
System.out.println(c);
//判断是否包含所有,包含所有则返回true
System.out.println(c.containsAll(c1));
System.out.println(c);
//只保留两集合中都有的部分,若值发生变化,则返回true;值不发生变化,则返回false
System.out.println(c.retainAll(c1));
System.out.println(c);