Collection的体系结构
Collection基本功能:
添加:
boolean add(Object e):添加元素 E(Element)
删除:
void clear() 暴力删除(将集合的素有元素全部干掉)
boolean remove(Object o):从集合中删除指定的元素
获取集合的元素数
int size():
判断功能:
boolean isEmpty():判断集合是否为空,为空元素,则返回true
boolean contains(Object o):判断集合中是否包含指定元素,包含则返回true
Collection的高级功能
boolean addAll(Collection c):添加一个集合中的所有元素
boolean containsAll(Collection c):包含一个集合中的所有元素
boolean removeAll(Collection c):删除集合中的所有元素, (删除一个算删除)(必须同时都被包含进去)
boolean retainAll(Collection c):A集合对B集合求交集,交集的元素是保存在A集合中,
boolean的返回值意思是看A集的元素如果有变化,返回true;没有变化,则返回false
public class CollectionDemo2 {
public static void main(String[] args) {
//创建两个Collection集合对象
Collection c1 = new ArrayList() ;
c1.add("abc1") ;
c1.add("abc2") ;
c1.add("abc3") ;
c1.add("abc4") ;
/* c1.add("abc5") ;
c1.add("abc6") ;
c1.add("abc7") ;*/
/* c1.add("abc5") ;
c1.add("abc6") ;
c1.add("abc7") ;*/
Collection c2 = new ArrayList() ;
c2.add("abc1") ;
c2.add("abc2") ;
c2.add("abc3") ;
c2.add("abc4") ;
c2.add("abc5") ;
c2.add("abc6") ;
c2.add("abc7") ;
System.out.println(c1);
System.out.println(c2);
System.out.println("---------------------------------");
//boolean addAll(Collection c):添加一个集合中的所有元素
// System.out.println(c1.addAll(c2));
//boolean containsAll(Collection c) :包含所有的元素算包含...
// System.out.println(c1.containsAll(c2));
//boolean removeAll(Collection c):删除集合中的所有元素, (删除一个算删除,还是删除所有):删除一个算删除(必须同时都被包含进去)
// System.out.println(c1.removeAll(c2));
// boolean retainAll(Collection c):A集合对B集合求交集, boolean的返回值是什么意思,交集的元素是保存在A中还是B中
/**
* A集合堆B集合求交集,交集的元素存储在A集合中,然后返回值的意思: 看A集合的元素是否有变化(之前的元素和现在交集的元素进行对比)
* 如果有变化,返回true;没有变化,则返回false
*
*/
System.out.println(c1.retainAll(c2)); //c1集合对c2集合取交集
System.out.println(c1);
System.out.println(c2);
System.out.println("-------------------------------------------");
//使用Colllection存储5个学生(姓名,年龄,性别),然后将Collection进行遍历,获取出来每一个学生的信息!
//创建一个Collection集合对象
Collection c = new ArrayList() ;
//创建5个学生
Student s1 = new Student("宋江",45,"男") ;
Student s2 = new Student("李逵",35,"男") ;
Student s3 = new Student("武大郎",35,"男") ;
Student s4 = new Student("西门庆",30,"男") ;
Student s5 = new Student("吴用",40,"男") ;
//存储集合中
c.add(s1) ;
c.add(s2) ;
c.add(s3) ;
c.add(s4) ;
c.add(s5) ;
// Object[] toArray():将集合转换成了对象数组
Object[] objs = c.toArray();//数组存储的每一个数据类型 Object obj = new Student() ; //向上转型
//遍历数组
for(int x = 0 ; x < objs.length ; x ++){
//System.out.println(objs[x]) ;
//getXXX()---->Student类的方法
Student student = (Student) objs[x]; //向下转型
System.out.println(student.getName()+"---"+student.getAge()+"---"+student.getGender());
}
}
}
运行结果:
Collection的迭代器(Iterator)
Iterator接口: boolean hasNext():判断迭代器中是否存在下一个元素
Object next(): 获取下一个可以遍历的元素
public class CollectionTest {
public static void main(String[] args) {
//创建集合对象
Collection c = new ArrayList() ; //List接口的子实现类 (重复元素)
//获取Collection的迭代器Iterator iterator()
Iterator it = c.iterator();
//添加元素
c.add("hello") ;
c.add("world") ;
c.add("javaee") ;
while(it.hasNext()){
Object obj = it.next();
//获取的元素同时,还要获取当前存储元素的长度 ---->String类型 length()
String str = (String) obj;//向下转型
System.out.println(str+"----"+str.length());
}
}
}
jdk5以后新特性:泛型<E/T>
泛型的格式:<引用数据类型>
集合类型<引用数据类型> 集合对象名 = new 子实现类<引用数据类型>() ;
泛型的好处:
将运行时期异常提前了编译时期
避免了强制类型转换
提高了程序安全性
public class GenericDemo {
public static void main(String[] args) {
//创建Collection集合对象
Collection<String> c = new ArrayList<String>() ;
c.add("hello") ;
c.add("高圆圆") ;
c.add("你好吗") ;
//获取迭代器Iteratr<E>是集合中存储的泛型是一致的
Iterator<String> it = c.iterator();
while(it.hasNext()){
//获取String字符串的同时,还要获取长度
//避免了强制类型转换
String str = it.next();
System.out.println(str+"---"+str.length());
}
}
}