【JavaSE_学习笔记】集合Collection接口
【JavaSE_学习笔记】集合Collection接口
Collection接口
目前:学习过哪些容器变量呢?
数组,StringBuffer/StringBuilder
对于数组来说,数组的长度是固定的,不符合实际需求(长度不可变)
对于StringBuffer/StringBuilder来说始终在内存中返回的是字符串类型,也不满足元素类型变化的要求
面试题:集合和数组的区别?
1)长度的区别:
数组:长度是固定的;
集合:长度是可变的
2)存储数据类型的区别:
数组:可以存储引用类型,可以存储基本数据类型
集合:只能存储引用类型
3)存储元素的区别:
数组:在同一个数组中,只能存储同一种数据类型的元素
集合:可以 存储多种数据类型的元素
Collection: 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List)实现
面试题:数组中有没有length(),String类中有没有length(),集合中有没有length()?
数组:length属性
String:length()
集合中:size()
集合的继承体系图:
Collection的常用方法:
增加:
boolean add(Object e:给集合中添加指定的元素
boolean addAll(Collection c):添加一个集合中的所有元素
删除:
void clear():删除一个集合中的所有元素,暴力删除,(不建议使用)
boolean remove(Object o):删除一个集合中的指定元素
boolean removeAll(Collection c):删除两个集合中的交集元素
判断功能:
boolean contains(Object o):判断一个集合中是否包含指定的单个元素
boolean containsAll(Collection c):判断一个集合中是否另一个集合;思考:是包含一个元素算是包含还是包含所有
boolean isEmpty():判断集合是否为空,如果为空,则返回true
交集功能:
boolean retainAll(Collection c):由于调用而发生改变则返回true,否则返回false
A集合对B集合取交集,那么交集的元素去A集合里面了,并且返回值boolean表达的意识是A集合中的元素是否发生变化,如果发生变化,就返回true;否则,false
获取功能:
int size():获取集合中的元素数
迭代:
Object[] toArray():将集合转换成数组
Iterator iterator():迭代器
举例:
import java.util.ArrayList;
import java.util.Collection;
public class Demo3 {
public static void main(String[] args) {
Collection c=new ArrayList();
c.add("hello");
c.add("world");
Collection c2=new ArrayList();
c2.add("hello");
c2.add("JavaSE");
c2.add("JavaWeb");
System.out.println(c);//[hello, world]
System.out.println(c.size());//2
System.out.println(c2);//[hello, JavaSE, JavaWeb]
/*c.addAll(c2);
System.out.println(c);//[hello, world, hello, JavaSE, JavaWeb]
*/
/*boolean flag=c2.remove("JavaSE");
System.out.println(flag+"------"+c2);//true------[hello, JavaWeb]
*/
/*boolean flag=c.removeAll(c2);
System.out.println(flag+"------"+c+"-------"+c2);//true------[world]-------[hello, JavaSE, JavaWeb]
*/
boolean flag=c.retainAll(c2);
System.out.println(flag+"------"+c+"-------"+c2);//true------[hello]-------[hello, JavaSE, JavaWeb]
}
}
迭代器(Iterator)的常用方法:
Iterator iterator():获取集合中的迭代器
当获取到集合中的迭代器时,迭代器对象就会有一个游标指向集合中的第一个元素
boolean hasNext():判断一个集合中是否有下一个可以迭代的元素
即问当前游标有没有指向一个元素
Object next():返回迭代的下一个元素
即首先获取当前游标指向的元素,然后游标向下移动一个单位
Object remove():移除迭代器返回的最后一个元素
举例:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo4 {
public static void main(String[] args) {
Collection c=new ArrayList();
c.add("张三");
c.add("李四");
c.add("王五");
Iterator it=c.iterator();
//遍历集合
while(it.hasNext()){
System.out.print(it.next());//张三李四王五
}
//删除集合最后一个元素
it.remove();
System.out.println(c);//[张三, 李四]
}
}
注意:存储自定义对象使用迭代器遍历,it.next()不要使用多次,否则会出现异常!