集合类:
- 方法有:add,remove,contains,clear,iterator
- 数据多了用对象存,对象多了用集合或者数组存
- 数组和集合类同是容器,有何不同?
-
数组长度固定,可存基本数据类型, 可存对象,只能存储同一个类型的对象
-
集合长度可变,只能存储对象,集合可以存储不同类型的对象
- 集合框架:
- 顶层根接口collection
- 子接口:List和Set
- 子类:ArrayList LinkedList Vector 和 HashSet TreeSet
- 为什么会出现这么多容器呢?
-
因为每一个容器对数据的存储方式不同,这个存储方式称为数据结构
-
- add方法的参数类型是Object,以便于接收任意类型对象
-
- 集合中存储的都是对象的引用(地址)
- 什么是迭代器呢?其实就是集合的取出元素的方式。
- 因为说有容器都有取出元素这个动作,最便捷的方法就是在类内部定义内部类
- 就把取出方式定义在集合的内部
- 这样取出方式就可以直接访问集合内容的元素,那么取出方式就可以直接访问集合内部的元素
- 而每一个容器的数据结构不同,所以取出的动作和细节也不一样,但是都有共性内容,判断和取出。
- 那么就可以将其共性内容抽取出来形成了一个接口。就是Iterator接口。如何获取集合的取出对象呢?
- 通过一个对外提供的方法,iterator();
import java.util.*;
public class CollectionDemo {
public static void main(String[] args) {
method_get();
}
public static void sop(Object obj){
System.out.println(obj);
}
public static void base_method(){
ArrayList al = new ArrayList();
//1.添加元素
al.add("java01");
al.add("java02");
al.add("java03");
//打印集合,局限性很大
sop(al);
//2.获取个数,集合长度
sop("size:"+al.size());
//3 删除元素
//al.remove(1);
//al.clear();//清空元素
sop("java01是否存在"+al.contains("java01"));
sop("集合是否为空"+al.isEmpty());
sop(al);
}
public static void method_2(){
ArrayList al1 = new ArrayList();
//1.添加元素
al1.add("java01");
al1.add("java02");
al1.add("java03");
ArrayList al2 = new ArrayList();
//1.添加元素
al2.add("java04");
al2.add("java05");
al2.add("java06");
al1.removeAll(al2);//取差集,al1改变,删除al1中,al1和al2一样的元素,al1中只保留和al2不同的元素
al1.retainAll(al2);//取交集,al1改变,al1中只会保留和al2 中相同的元素
sop("al1"+al1);
sop("al2"+al2);
}
public static void method_get(){
ArrayList al = new ArrayList();
//1.添加元素
al.add("java01");
al.add("java02");
al.add("java03");
//取出元素并操作(判断等)
/*
* Iterator it = al.iterator(); //获取迭代器,用于取出集合中的元素
while(it.hasNext()){
sop(it.next());
}
*/
for(Iterator it = al.iterator();it.hasNext();){
sop(it.next());
}
}