上面是集合的继承体系图,根据此图可更方便学习集合
Colleciton的集合的高级功能:
boolean addAll(Collection c) :添加一个集合中的所有元素boolean removeAll(Collection c):删除的高级功能(思考:删除一个算是删除还是删除所有算是删除?)
boolean containsAll(Collection c):包含所有元素算是包含,还是包含一个算是包含
交集功能:
boolean retainAll(Collection c):A集合对B集合取交集,交集的元素到底是去A集合还是去B集合中,返回值boolean
表达什么意思?
public class CollecitionDemo {
public static void main(String[] args) {
//创建集合对象
Collection c1 = new ArrayList() ;
c1.add("abc");
c1.add("efg");
c1.add("hij");
System.out.println(c1);
System.out.println("-------------------------");
//创建第二个集合对象
Collection c2 = new ArrayList();
c2.add("abc");
c2.add("efg");
// c2.add("123");
c2.remove("123");
System.out.println(c2);
System.out.println("-------------------------");
boolean a = c1.containsAll(c2);
System.out.println(a);
System.out.println("-------------------------");
//有结果可知包含所有才算包含
boolean b = c1.retainAll(c2);
System.out.println(b);
/**
* 结论:A集合对B集合取交集,交集的元素要去A集合中,
* boolean返回值表达的A集合的元素是否发生变化
* ,如果发生变化,则返回true,否则,返回false
*/
}
}
转换功能:Object[] toArray() :将集合转换成数组
需求:要给集合中存储字符串类型的数据,并遍历
public class CollectionDemo1 {
public static void main(String[] args) {
//创建集合对象,并导包
Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");
//将集合遍历,只有数组有lenth属性
Object [] ob = c.toArray();
for(int i = 0;i<ob.length ;i++) {
System.out.println(ob[i]+"----"+ob.length);
//ob.length输出的数组的长度
/**
*上面代码有问题
* length():属于String类型的特有功能,可以获取字符串长度
*/
String str = (String) ob[i] ; //相当于:向下转型
System.out.println(str+"----"+str.length());
}
}
}
Iterator iterator() :集合的迭代器方法(获取集合的迭代器)
集合的专有遍历方式:迭代器遍历Iterator :接口中有以下的方法:
boolean hasNext() :如果有元素可以迭代,那么返回true,否则返回false
Object next()返回迭代的下一个元素。
存储String类型的元素
class IteratorDemo {
public static void main(String[] args) {
//创建集合对象
Collection c = new ArrayList();
c.add("world");
c.add("java");
c.add("hello");
//Iterator iterator() :集合的迭代器方法(获取集合的迭代器)
Iterator it = c.iterator();
while(it.hasNext()) {
Object ob = it.next();//我的理解String类型的父类
// System.out.println(ob);
//想要输出字符串的长度,必须转化为字符串类型
String str = (String)ob;
System.out.println(str+"---"+str.length());
}
}
}
List集合的特点:
有序的 (存储和取出一致),可以允许重复元素Set集合的特点:
无序性(不能保证迭代的顺序,基于hashMap),并且元素不能重复
public class ListDemo {
public static void main(String[] args) {
//创建List对象,并导包
List L = new ArrayList();
L.add("hello");
L.add("world");
L.add("java");
//用迭代器遍历
Iterator it = L.iterator() ;
while(it.hasNext()) {
Object ob = it.next();
String s = (String)ob;
System.out.println(s+"-----"+s.length());
}
}
}
List集合的特有功能:
添加功能
void add(int index,Object element):在指定位置处添加指定元素获取功能
Object get(int index)返回列表中指定位置的元素。ListIterator listIterator():列表迭代器
删除功能:
Object remove(int index):删除指定位置处的元素修改功能
Object set(int index, Object element):用指定element元素替换掉指定位置处的元素public class ListDemo1 {
public static void main(String[] args) {
//创建集合对象
List list = new ArrayList();
//添加元素
list.add("hello") ;
list.add("world") ;
list.add("java") ;
System.out.println("list:"+list);
//void add(int index,Object element):在指定位置处添加指定元素
list.add(1, "javaee");
System.out.println("list:"+list);
System.out.println("---------------------");
//Object get(int index)返回列表中指定位置的元素。
System.out.println("get():"+list.get(2));
System.out.println("---------------------");
// Object remove(int index):删除指定位置处的元素
System.out.println("remove():"+list.remove(3));
// Object set(int index, Object element):用指定element元素替换掉指定位置处的元素
System.out.println("set():"+list.set(2, "android"));
System.out.println("list:"+list);
}
}
ListIterator listIterator():列表迭代器 (List集合的专有迭代遍历:列表迭代器)
ListIterator接口中:boolean hasNext() :判断是否有下一个可以迭代的元素(正向遍历)
Object next():获取下一个元素
boolean hasPrevious():判断是否有上一个可以迭代 元素(逆向遍历)
Object previous():返回上一个元素
逆向迭代(遍历),单独使用没意义,前提,要先正向遍历
public class ListIteratorDemo {
public static void main(String[] args) {
//创建集合对象
List L = new ArrayList();
//添加集合内容
L.add("ASD");
L.add("asD");
L.add("QWE");
L.add("ASDQW");
//创建ListIterator迭代器进行遍历
ListIterator it = L.listIterator() ;
//遍历集合
while(it.hasNext()) {
Object ob = it.next();//向下转型强制类型转换
String str = (String)ob;
System.out.println(str+"----"+str.length());
}
//boolean hasPrevious():判断是否有上一个可以迭代 元素(逆向遍历)
//Object previous():返回上一个元素
while(it.hasPrevious()) {
String s = (String)it.previous() ;
System.out.println(s+"---"+s.length());
}
}
}