单列集合
集合框架1、概念2、集合框架
Collection接口1、常用方法
迭代器1、迭代器原理2、foreach循环3、迭代器使用常见问题
泛型基本使用1、为什么要有泛型?2、泛型的语法:3、泛型注意的地方
集合框架
1、概念
概念:集合一种容器,可以存储对象。集合和数组区别:
数组的长度固定,集合长度不固定数组可以存储基本数据类型和引用数据类型 int[] / Student[],集合是能存储引用数据类型数组中每个元素都是相同的数据类型,集合可以存储不同的数据类型
2、集合框架
Collection接口
单列集合的顶层接口
1、常用方法
add方法向集合集合中添加元素clear方法,清空集合中所有元素contains方法 判断集合是否包含某个元素isEmpty判断集合是否为空remove方法 移除集合中元素,返回boolean类型。如果集* * 合中不包含次元素,则删除失败size()返回集合中元素的个数toArray将集合转换成数组。addAll 向一个集合中添加另一个集合containsAll 判断一个集合中是否包含另一个集合removeAll 从一个集合中移除另一个集合
public class CollectionDemo {
public static void main(String
[] args
) {
Collection coll
= new ArrayList();
coll
.add("张三");
coll
.add(10);
coll
.add(20.20);
coll
.add(new Student("cxk"));
System
.out
.println(coll
);
System
.out
.println(coll
.contains("张三"));
System
.out
.println(coll
.contains("cxk"));
System
.out
.println(coll
.isEmpty());
coll
.remove("张三1");
System
.out
.println(coll
);
System
.out
.println("集合中元素的个数:"+coll
.size());
Object
[] arr
= coll
.toArray();
System
.out
.println(Arrays
.toString(arr
));
System
.out
.println("---------------------------------------------------------");
Collection coll1
= new ArrayList();
coll1
.add("1");
coll1
.add("2");
Collection coll2
= new ArrayList();
coll2
.add("a");
coll2
.add("b");
coll1
.addAll(coll2
);
System
.out
.println(coll1
);
System
.out
.println(coll2
.containsAll(coll1
));
coll2
.removeAll(coll1
);
System
.out
.println(coll2
);
}
private static class Student {
String name
;
public Student(String name
) {
this.name
= name
;
}
@Override
public String
toString() {
return "Student{" +
"name='" + name
+ '\'' +
'}';
}
}
}
迭代器
1、迭代器原理
演示
public class IteratorDemo {
public static void main(String
[] args
) {
Collection coll
= new ArrayList();
coll
.add("张三1");
coll
.add("张三2");
coll
.add("张三3");
coll
.add("张三4");
coll
.add("张三5");
coll
.add("张三6");
Iterator it
= coll
.iterator();
while(it
.hasNext()) {
System
.out
.println(it
.next());
}
}
}
2、foreach循环
foreach循环即增强版的for循环
/**
* foreach循环 增强版for循环
* 语法:
* for(每个元素的类型 变量 :要遍历的集合){
*
* }
*/
for(Object obj:coll) {
System.out.println(obj);
}
3、迭代器使用常见问题
如果迭代器使用过,那么游标指向最后的位置在一次迭代中,不要多次调用next方法在迭代器迭代的时候,不能对集合进行添加或删除如果在迭代过程要移除元素,需要使用迭代器的remove方法
public class Demo10 {
public static void main(String
[] args
) {
Collection coll
= new ArrayList();
coll
.add("张三1");
coll
.add("张三2");
coll
.add("张三3");
coll
.add("张三4");
coll
.add("张三5");
coll
.add("张三6");
coll
.add("张三7");
Iterator it
= coll
.iterator();
while(it
.hasNext()) {
System
.out
.println(it
.next());
}
while(it
.hasNext()) {
System
.out
.println(it
.next());
}
while(it
.hasNext()) {
Object obj
= it
.next();
System
.out
.print(it
.next()+"\t");
}
while(it
.hasNext()) {
coll
.add("rose");
coll
.remove("张三3");
System
.out
.println(it
.next());
}
while(it
.hasNext()) {
System
.out
.print(it
.next()+"\t");
it
.remove();
}
System
.out
.println(coll
);
}
}
泛型基本使用
1、为什么要有泛型?
如果不使用泛型,那么集合中存储的元素,要不断 发生向上向下转型,而转型就有可能会发生错误泛型的作用就是将类型的检查提前到了编译期
2、泛型的语法:
集合<类型> 集合名 = new 集合<类型>();
3、泛型注意的地方
泛型不存在多态,没有继承
Collection<Animal> coll1 = new ArrayList<Dog>(); 报错
只能使用基本数据类型的包装类
Collection<Integer> cool2 = new ArrayList<Integer>();
```