您的位置:首页 > 编程语言 > Java开发

java基础之集合框架Collection详解

2015-08-21 15:55 477 查看
集合框架之Collection接口中的方法详解:

(一) Collection:是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的,有无序的。

(二)Collection的功能概述:
1:添加功能
boolean add(Object obj):添加一个元素
boolean addAll(Collection c):添加一个集合的元素
2:删除功能
void clear():移除所有元素
boolean remove(Object o):移除一个元素
boolean removeAll(Collection c):移除一个集合的元素(是一个还是所有)
3:判断功能
boolean contains(Object o):判断集合中是否包含指定的元素
boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有)
boolean isEmpty():判断集合是否为空
4:获取功能
Iterator<E> iterator()

5:长度功能
int size():元素的个数
面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?
6:交集功能
boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?
7:把集合转换为数组
Object[] toArray()

import java.util.ArrayList;
import java.util.Collection;
/*
* Collection集合方法测试(1):
*
*/
public class CollectionDemo1 {
public static void main(String[] args) {

//接口不能实例化,new了一个List接口所实现的ArrayList类
Collection c = new ArrayList();

// boolean add(Object obj):添加一个元素
System.out.println("add:"+c.add("hello"));
c.add("hello");
c.add("world");
c.add("java");

// void clear():移除所有元素
c.clear();

// boolean remove(Object o):移除一个元素
System.out.println("remove:" + c.remove("hello"));
System.out.println("remove:" + c.remove("javaee"));

// boolean contains(Object o):判断集合中是否包含指定的元素
System.out.println("contains:"+c.contains("hello"));
System.out.println("contains:"+c.contains("android"));

// boolean isEmpty():判断集合是否为空
System.out.println("isEmpty:"+c.isEmpty());

//int size():元素的个数
System.out.println("size:"+c.size());

System.out.println("c:" + c);
}
}


import java.util.ArrayList;
import java.util.Collection;

/*
* Collection集合方法测试(2):
*     boolean addAll(Collection c):添加一个集合的元素
*     boolean removeAll(Collection c):移除一个集合的元素
*     boolean containsAll(Collection c):判断集合中是否包含指定的集合元素
*     boolean retainAll(Collection c):A对B做交集,最终的结果保存在A中,B不变。返回值表示的是A是否发生过改变。
*/
public class CollectionDemo2 {
public static void main(String[] args) {
// 创建集合1
Collection c1 = new ArrayList();
c1.add("abc1");
c1.add("abc2");
c1.add("abc3");
c1.add("abc4");

// 创建集合2
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");

// boolean addAll(Collection c):添加一个集合的元素
// System.out.println("addAll:" + c1.addAll(c2));

//boolean removeAll(Collection c):移除一个集合的元素
//只要有一个元素被移除了,就返回true。
//System.out.println("removeAll:"+c1.removeAll(c2));

//boolean containsAll(Collection c):判断集合中是否包含指定的集合元素
//只有包含所有的元素,才叫包含
// System.out.println("containsAll:"+c1.containsAll(c2));

//boolean retainAll(Collection c):
//假设有两个集合A,B。
//A对B做交集,最终的结果保存在A中,B不变。
//返回值表示的是A是否发生过改变。
System.out.println("retainAll:"+c1.retainAll(c2));

System.out.println("c1:" + c1);
System.out.println("c2:" + c2);
}
}


(三)Collection集合的遍历

  (1)集合转化成数组(toArray()方法):

import java.util.ArrayList;
import java.util.Collection;

/*
* 集合的遍历。其实就是依次获取集合中的每一个元素。
*
* Object[] toArray():把集合转成数组,可以实现集合的遍历
*/
public class CollectionDemo3 {
public static void main(String[] args) {
// 创建集合对象
Collection c = new ArrayList();

// 添加元素
c.add("hello"); // Object obj = "hello"; 向上转型
c.add("world");
c.add("java");

// 遍历
// Object[] toArray():把集合转成数组,可以实现集合的遍历
Object[] objs = c.toArray();
for (int x = 0; x < objs.length; x++) {
// 注意:数组中没有length()方法,只有length属性
// 向下转型
String s = (String) objs[x];
System.out.println(s + "---" + s.length());
}
}
}


  (2)迭代器--集合的专用遍历方式(Iterator接口):
    Iterator接口:对 collection 进行迭代的迭代器

      该接口中的方法有三个:

        boolean hasNext() 如果仍有元素可以迭代,则返回 true。
        E next() 返回迭代的下一个元素。    

   void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
* Iterator iterator():迭代器,集合的专用遍历方式
*         Object next():获取元素,并移动到下一个位置。
*             NoSuchElementException:没有这样的元素,因为你已经找到最后了。
*         boolean hasNext():如果仍有元素可以迭代,则返回 true。
*
* 注意:尽量不要多次使用it.next()方法,因为每次使用都是访问一个对象
*/
public class IteratorDemo {
public static void main(String[] args) {
// 创建集合对象
Collection c = new ArrayList();

// 创建并添加元素
c.add("hello");
c.add("world");
c.add("java");

// Iterator iterator():迭代器,集合的专用遍历方式
Iterator it = c.iterator(); // 实际返回的肯定是子类对象,这里是多态

while (it.hasNext()) {
// System.out.println(it.next());
String s = (String) it.next();
System.out.println(s);
}
//用for循环遍历
// for(Iterator it = c.iterator();it.hasNext();){
// String s = (String) it.next();
// System.out.println(s);
// }
}
}


(四)关于迭代器Iterator的源码(多层继承):

//接口中的方法默认抽象 public abstract
//Iterator接口及其中的方法
public interface Interator {
boolean hasNext();
Object next();
}
//Iterable接口 :超级接口,在接口中定义了一个Interator()方法 返回值类型为Iterator接口
public interface Iterable {
Iterator iterator();
}
//Collectio接口继承了Iterable接口同样有了iterator()方法 ,未实现
public interface Collection extends Iterable {
Iterator iterator();
}
//List接口继承了Collectio接口口同样有了iterator()方法,未实现
public interface List extends Collection {
Iterator iterator();
}
//ArrayList类实现了List接口,重写了iterator方法,返回一个Itr类的对象
//在Itr类中,该类实现了Iterator接口并重写 了hasNext和next方法
public class ArrayList implements List {
public Iterator iterator() {
return new Itr();
}

private class Itr implements Iterator {
public boolean hasNext() {}
public Object next(){}
}
}

//这里实际new的是Itr()对象 ;
Iterator it = c.iterator();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: