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); } } }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM