学生的面向对象语言,面向对象语言对事物的描述是通过对象体现的,那么需求需要来存储多个对象.
要存储多个对象,不能使用基本类型的变量,需要使用容器类型的变量? 学习过哪些容器变量? 数组 ,字符串缓冲区(StringBuffer)
对于字符串缓冲区来说,在内存中始终存储的是字符串,不能满足要求;数组呢,数组的长度是固定的,不符合长度编号的要求,所有Java提供了一个 Collection 集合;
数组和集合的区别?
1)长度区别:
数组长度固定
集合长度可变
2)内容的区别
数组可以存储同一种类型的元素
集合可以存储多种类型的元素
3)存储类型的区别
数组:可以存储基本类型,也可以存储引用类型 String[] str = {"hello","world","java",100} ; 错误的
集合:只能存储引用类型
集合:Collection:子接口有两个,两个子接口分别对应多个子实现类,多个集合数据结构不同,但是他们有共性内容,将共性内容
抽取出来,就可以集合继承体系图!
数据结构:数据的存储方式
Collection:
Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
JDK 不提供此接口的任何直接 实现:它提供更具体的子接口,更具体的实现类
基本功能:
添加功能:
boolean add(Object e)
删除功能:
void clear() :删除集合中所有元素(暴力删除)
boolean remove(Object o):删除集合中的指定元素
判断功能:
boolean contains(Object o):集合中是否包含指定的元素
获取功能:
int size() :获取集合中的元素数
Colleciton的集合的高级功能:
boolean addAll(Collection c) :添加一个集合中的所有元素
boolean removeAll(Collection c):删除的高级功能(思考:删除一个算是删除还是删除所有算是删除?)
boolean containsAll(Collection c):包含所有元素算是包含,还是包含一个算是包含
//boolean containsAll(Collection c):包含所有元素算是包含,还是包含一个算是包含
//结论:包含所有算是包含
// System.out.println("containsAll():"+c1.containsAll(c2));
判断集合是否为空: //boolean isEmpty() :
System.out.println(c.isEmpty());boolean retainAll(Collection c) :交集功能: A集合对B集合取交集元素 :思考
boolean 表达的是什么意思,交集的元素是去A集合还是去B集合中
// boolean retainAll(Collection c):A集合对B集合取交集,交集的元素到底是去A集合还是去B集合中,
//返回值boolean表达什么意思?
结论:A集合对B集合取交集,交集的元素要去A集合中,boolean返回值表达的A集合的元素是否发生变化,如果发生变化,则返回true,否则,返回false
System.out.println("retainAll():"+c1.retainAll(c2));
boolean removeAll(Collection c):删除一个集合中所有元素: 思考: 删除一个元素算是删除还是删除所有算是删除?
例句:// boolean removeAll(Collection c):删除的高级功能(思考:删除一个算是删除还是删除所有算是删除?)
//结论:删除一个算是删除...
// System.out.println("removeAll():"+c1.removeAll(c2));
转换功能:
Object[] toArray() :将集合转换成数组
例句:
Object[] objs = c.toArray() ;//将集合转成数组
String str = (String) objs[x] ; //相当于:向下转型
System.out.println(str+"----"+str.length());//可获得数组长度。