java基础知识5--集合类(Set,List,Map)和迭代器Iterator的使用

写的非常棒的一篇总结: http://blog.csdn.net/speedme/article/details/22398395#t1

下面主要看各个集合如何使用迭代器Iterator获取元素:

1.list使用迭代器Iterator

public class testArrayList {
    public static void main(String args[]) {
        f1();
        f2();
    }
    public static void f1(){
        List<String> strList = new ArrayList<String>();
        for (int i = 0; i < 10; i++)
        {
            strList.add("string" + i);
        }

        Iterator<String> iterator = strList.iterator();//list.iterator()
        while (iterator.hasNext())  //判断集合中元素是否遍历完毕,如果没有,就返回true
        {
            if (iterator.next().equals("string3"))
            {
                iterator.remove();  //iterator.remove()移除的是最近一次iterator.next()所获取的对象
            }
        }
        iterator = strList.iterator();//此步非常重要,删除后要重新定义迭代器
        while (iterator.hasNext())
        {
            System.out.println(iterator.next()); //iterator.next() 返回下一个元素
        }
    }

        public static void f2() {
// 1.向arraylist中添加元素

            ArrayList arrayList = new ArrayList();
            arrayList.add("wyy");  //arrayList.add
            arrayList.add("12");
            arrayList.add("huhu");
            arrayList.add("897");

            System.out.println("输出整个arraylist" + arrayList);  //[wyy, 12, huhu, 897]

            for (int i = 0; i < arrayList.size(); i++) {
                System.out.println(arrayList.get(i));
            }

            Iterator<String> a = arrayList.iterator();
            System.out.println("剩下的元素有:");
            while (a.hasNext()) {
                if (a.next().equals("12")) {
                    a.remove();
                }
            }
//用for循环,可以节约内存,开发时一般使用
            for( a = arrayList.iterator();a.hasNext();)//注意,如果判断结果后删除,必须重新对迭代器进行定义,才能取出剩余的数据
            {
                System.out.println(a.next());
            }
        }

}

2.set使用迭代器Iterator

package collection;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

/**
 * Created by wyy on 2017/2/20.
 */
public class SetTest {
    public static void main(String[] args) {

//set常用的方法:
        Set set = new HashSet();
        set.add("wq");
        set.add("er");
        set.add("er");
        set.add("gee");
        set.add("wdd");
        set.add("3242");
        System.out.println(set);
        Set sortedSet = new TreeSet(set); //添加的元素必须是有效,即可比较排序的,用compareTo
     /* sortedSet.add(new SetTest());
        报错:collection.SetTest cannot be cast to java.lang.Comparable  add的元素必须是可以比较的*/
        System.out.println(sortedSet); //[3242, er, gee, wdd, wq],列表的第二次输出已按字母顺序排序。
        String a="a";
        String b="a";
        System.out.println(a.hashCode());//65
        System.out.println(b.hashCode());//97

        Iterator iterator=set.iterator();//创建一个集合的迭代器,用来取元素
        while (iterator.hasNext()){
              Object obj = iterator.next();
            System.out.println(obj);

        }

    }
}

3.map使用迭代器,共有4种方法

package collection;

import java.util.*;

/**
 * Created by wyy on 2017/2/21.
 */
public class MapTest {
    public static void main(String[] args) {
        Map<Integer,String> map=new HashMap<>();
        map.put(1,"wo");
        map.put(2,"chi");
        map.put(3,"xi");
        map.put(4,"gua");
        System.out.println(map.size());
/*方法1:使用set存储key的值,然后用for循环获取value的值*/
        Set<Integer> set=map.keySet();//获取所有key的值
        for (int i:set
             ) {
            String value=map.get(i);  //获取value的值
            System.out.println(value);

        }

/*方法2:使用Map.entrySet<>构造iterator遍历key和value*/
        Iterator<Map.Entry<Integer,String>> it=map.entrySet().iterator();
        while (it.hasNext()){
            Map.Entry<Integer,String> entry=it.next();
            System.out.println("the key is:"+entry.getKey()+",and the value is:"+entry.getValue());

        }

/*方法3:推荐,通过Map.entrySet遍历key和value,特别是大容量时 */
        for (Map.Entry<Integer,String> en:map.entrySet()){
            System.out.println("the key is:"+en.getKey()+",and the value is:"+en.getValue());
        }
        
/* 方法4:只能得到value的值       */
        for (String v1:map.values()
             ) {
            System.out.println("the value is:"+v1);
        }

    }
}

 

posted @ 2017-02-21 20:40  小丸子~  阅读(8775)  评论(0编辑  收藏  举报