zoukankan      html  css  js  c++  java
  • 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);
            }
    
        }
    }
  • 相关阅读:
    第3课 线性分类器损失函数与最优化
    李飞飞机器视觉课程笔记:第2课 K最近邻与线性分类器
    周志华《机器学习》第二章学习笔记
    通过anaconda安装tensorflow
    周志华《机器学习》第一章学习笔记 奥卡姆剃刀原理、没有免费的午餐定理(NFL)、回归模型
    DPM目标检测模型
    损失函数的理解
    mini-batch的理解
    前向传播、后向传播
    SVM(支持向量机)的理解
  • 原文地址:https://www.cnblogs.com/alwayswyy/p/6426113.html
Copyright © 2011-2022 走看看