java基礎知識5--集合類(Set,List,Map)和迭代器Iterator的使用

寫的很是棒的一篇總結: http://blog.csdn.net/speedme/article/details/22398395#t1java

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

1.list使用迭代器Iterator.net

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使用迭代器Iterator3d

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種方法code

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); } } }
相關文章
相關標籤/搜索