码迷,mamicode.com
首页 > 编程语言 > 详细

java集合学习之Collection(1)

时间:2015-03-16 16:34:20      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:java   集合   collection   

java集合类主要由两个接口派生出来:Collection和Map,者两个类是java集合框架的根本接口,其余的集合都是这两个集合的子类,这篇博客主要讲Collection接口及其体系中包含的set,list,queue 等集合。下面依次就这些内容进行讲解。

一.Collection
1.Collection是set,list,queue接口的父接口,Collection中定义的方法对set,list,queue也是适用的。下面的代码示范了Collection的基本操作,从下面的代码中可以看到,集合的操作有针对当个元素和一个集合的,这两种操作的函数名很是类似,只是对于操作对象是集合的,函数名一般加一个All。

package lkl;

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

public class CollectionTest {

       public static void main(String[] args){
           Collection c = new ArrayList();
           Collection d= new HashSet();

           ///add()方法可以向集合中添加一个元素
           ///addAll()方法可以添加一个集合
           c.add("lkl");
           d.add("test");
           d.add("java");
           c.addAll(d);

           ///isEmpty()方法用来测试集合是否为空
           System.out.println("集合是否为空?"+c.isEmpty());

           ///remove()可以将一个元素从集合中移除
          /// removeAll可以将某个集合的全部元素从当前集合移除
           c.remove("lkl");
           c.remove(d);
           System.out.println("集合是否为空?"+c.isEmpty());

           c.add("lkl");
           c.add(d);

           ///contains()方法可以用来判断集合是否包含某个元素
           ///containsAll可以用来判断集合是否包含另一个集合中所有的元素
           System.out.println("集合c是否包含“lkl”?"+c.contains("lkl"));
           System.out.println("集合c是否d中的所有元素?"+c.containsAll(d));

           ///retainAll()方法求当前集合和传入集合的交集
           c.retainAll(d);
           System.out.println(c);

           c.add("lkl");

           ///size()方法返回集合中元素的个数
          System.out.println("集合c中的元素个数为:"+c.size());

        /*  ///toArray将集合转换成一个数组,集合元素成为数组元素
          String[] str =(String[])c.toArray();*/

          ///clear()将集合清空
          c.clear();
          System.out.println("集合是否为空?"+c.isEmpty());
       }
}

2.Collection集合的遍历
我们一般使用Iterator来遍历集合。Iterator也是java集合框架的成员,其主要用于遍历Collection集合;它提供了以下三个方法:
bool hasNext():如果集合的元素还没被遍历玩,则返回true
Object next(): 返回集合中的下一个元素
void remove(): 删除集合里上次next()方法返回的元素
有三个需要注意的地方:
1.从集合中返回的元素是Object类型的,所以我们需要手动进行类型转换。
2.每次返回的是集合中元素的值而不是元素本身,所以我们不能通过改变返回的值而改变集合中元素本身。
3.我们不能在迭代访问时改变集合中元素(但可以调用Iterator的remove方法),否则会引发异常。
下面的代码示范了如何通过迭代器遍历集合中元素:

package lkl;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

public class IteratorTest {

    public static void main(String[] args){

        Collection c =new HashSet();
        c.add("java");
        c.add("c");
        c.add("c++");
        c.add("shell");

        ///声明一个Collection的迭代器
        Iterator it = c.iterator();
        while(it.hasNext()){
            ///从集合中取出的元素都是Object类型的,需要进行类型转换
            String str = (String) it.next();
            if(str=="shell"){
                ///我们可以通过调用iterator的remove方法来删除
                ///上次迭代返回的元素,但是不能通过别的方法来改变集合中的元素
                it.remove();
                ///下面这句代码会引发异常
                ///c.add("python");
            }
            str="lkl";   ///我们不能通过改变迭代器的返回值而改变集合中的元素
        }
        System.out.println(c);
    }
}

java5后还可以通过foreach循环来迭代访问集合中的元素(就和访问数组中元素一样),使用foreach方法访问时注意事项同上面的Iterator方法,下面的代码示范了这种方法:

package lkl;

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

public class ForeachTest {

    public static void main(String[] args){

        Collection c =new ArrayList();
        c.add("java");
        c.add("c");
        c.add("c++");
        c.add("shell");
        for(Object cc : c){
            String str = (String) cc;
            System.out.println(str);
        }
    }
}

java集合学习之Collection(1)

标签:java   集合   collection   

原文地址:http://blog.csdn.net/acm_lkl/article/details/44265733

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!