c#iterator()_c# iterator - CSDN
精华内容
参与话题
  • Map获取值的方式

    千次阅读 2016-09-15 16:55:45
    第一种: Map,String> map=new HashMap, String>(); map.put("a", "b"); Collection<String> values=map.values(); for(Iterator<String> iterator=values.iterator();iterato
    第一种:
           Map<String,String> map=new HashMap<String, String>();
    
            map.put("a", "b");
    
            Collection<String> values=map.values();
    
            for(Iterator<String> iterator=values.iterator();iterator.hasNext();)
            {
               String value=iterator.next();
                System.out.println(value);
            }
    
    Map中values方法包含所有值,返回一个Collections集合,通过迭代器获取所有值
    
    第二种:
    
            Map<String,String> map=new HashMap<String, String>();
    
            map.put("a", "b");
    
    
            Set<String> keySet=map.keySet();
    
            for(Iterator<String> iterator=keySet.iterator();iterator.hasNext();)
            {
                String key=iterator.next();
    
                String value=map.get(key);
    
            }
    
    第三种
    Map<String,String> map=new HashMap<String, String>();
    
            map.put("a", "b");
            map.put("b", "x");
    
            Set<Entry<String, String >> entrySet=map.entrySet();
    
            for(Iterator<Entry<String, String>> iterator= entrySet.iterator();iterator.hasNext();)
            {
                Entry<String, String> entry=iterator.next();
    
                String key=entry.getKey();
    
                String value=entry.getValue();
    
                System.out.println("key= "+key+" value= "+value);
            }
    展开全文
  • 遍历List 同时 remove 元素

    千次阅读 2013-03-20 15:15:16
    List list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5);... for (Iterator iter = list.iterator(); iter.hasNext();) { int i = iter.nex

    		List<Integer> list = new ArrayList<Integer>();
    		list.add(1);
    		list.add(2);
    		list.add(3);
    		list.add(4);
    		list.add(5);
    		list.add(6);
    
    		for (Iterator<Integer> iter = list.iterator(); iter.hasNext();)
    		{
    			int i = iter.next();
    			if (i == 3)
    			{
    				list.remove(i);
    			}
    		}

    运行上边的代码就会报错:


    API中此异常的解释:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。

    原因:

    Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁。 Iterator 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变,所以当索引指针往后移动的时候就找不到要迭代的对象,所以按照 fail-fast 原则 Iterator 会马上抛出 java.util.ConcurrentModificationException 异常。

    所以 Iterator 在工作的时候是不允许被迭代的对象被改变的。但你可以使用 Iterator 本身的方法 remove() 来删除对象, Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性。


    网上找的解决方法:

    1.倒过来遍历list

    for (int i = list.size()-1; i >=0; i--)
    {
    	int item = list.get(i);
    	if (item == 3)
    	{
    		list.remove(item);
    	}
    }

    2.每移除一个元素以后再把i移回来

    for (int i = 0; i < list.size(); i++) 
    {
    	int item = list.get(i);
    	if (item == 3)
    	{
    		list.remove(item);
    		i=i-1;
    	}
    }

    3.使用iterator.remove()方法删除

    for (Iterator<Integer> iter = list.iterator(); iter.hasNext();)
    {
    	int item = iter.next();
    	if (item == 3)
    	{
    		iter.remove();
    	}
    }






    展开全文
  • HashMap 使用例子

    千次阅读 2012-05-16 10:58:12
    import java.util.HashMap; import java.util.HashSet;...import java.util.Iterator; public class HashMapTest { public static void main(String[] args){ HashMap hm=new HashMap(); People p1=new Pe
    import java.util.HashMap;
    import java.util.HashSet;
    
    import java.util.Iterator;
    
    public class HashMapTest {
     
     public static void main(String[] args){
      HashMap<String,Object> hm=new HashMap<String,Object>();
      
      People p1=new People();
      People p2=new People();
      People p3=new People();
      People p4=new People();
    
      hm.put("People3", p1);
      hm.put("People1", p2);
      hm.put("People4", p3);
      hm.put("People2", p4);  
      
      
      Iterator<String> it=hm.keySet().iterator();
      
      while(it.hasNext()){
       System.out.println(it.next());
      }  
     }
    }
    class People {
     private String name;
     private int age;
     public int getAge() {
      return age;
     }
     public void setAge(int age) {
      this.age = age;
     }
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
    }
    
    /*第一种:
      Map map = new HashMap();
      Iterator iter = map.entrySet().iterator();
      while (iter.hasNext()) {
      Map.Entry entry = (Map.Entry) iter.next();
      Object key = entry.getKey();
      Object val = entry.getValue();
      }
      效率高,以后一定要使用此种方式!
    第二种:
      Map map = new HashMap();
      Iterator iter = map.keySet().iterator();
      while (iter.hasNext()) {
      Object key = iter.next();
      Object val = map.get(key);
      }
      效率低,以后尽量少使用!*/
    

    展开全文
  • Iterator的几个方法及意义

    千次阅读 2016-08-05 14:20:05
    迭代器通常被称为轻量级对象,因为创建它的代价小,Java的Iterator只能用来单向移动。 4个方法: 1.使用iterator()来返回一个Iterator。 2.使用next()获得序列中的下一个元素。 3.使用hasNext()检查序列中是否...

    迭代器是一个对象,它的工作时遍历并选择序列中的对象。迭代器通常被称为轻量级对象,因为创建它的代价小,Java的Iterator只能用来单向移动。

    4个方法:

    1.使用iterator()来返回一个Iterator。

    2.使用next()获得序列中的下一个元素。

    3.使用hasNext()检查序列中是否还有元素。

    4.使用remove()将迭代器新近返回的元素删除。


    其实,迭代器除了遍历容器之外,最大的功能就是统一了对容器的访问方式。

    完全可以将Itarator作为参数,例如(Java编程思想中的源码):

    public class CrossContainerIterator{
    public static  void display (Iterator<Pet> it){
      while(it.hasNext()){
      Pet p  = it.next();
    System.out.println(p.id+":"+p);
    }
    
    public static void main(String [] args){
      ArrayList<Pet> pets = Pets.arrayList(8);
      LinkedList<Pet> petsLL = new LinkedList<Pet>(pets);
      HashSet<Pet> petsHS = new HashSet<Pet>(pets);
      TreeSet<Pet> petTS = new TreeSet<Pet>(pets);
      display(pets.iterator);
      display(petsLL.iterator);
      display(petsHS.iterator);
      display(petsTS.iterator);
     
    }
    }
    
    
    由此可看出不用去管具体的容器类型是什么,只要数据类型相同,那么都能使用iterator来进行遍历。

    展开全文
  • list的三种循环方式

    千次阅读 2016-09-01 09:31:16
     分别是经典的for循环,迭代器(list.iterator()),foreache循环(和C#相同哦)  测试代码如下: public static void main(String[] args) { List list=new ArrayList(); list.add("123");
  • ListIterator是Iterator的子接口,是List集合特有的迭代输出接口,它可以实现在迭代过程中对元素的增删改查。在使用Iterator迭代过程中,不要使用集合操作元素,容易出现异常,demo1:package com.wql;import java....
  • JSONObject获取KEY的方法

    千次阅读 2011-11-21 10:10:08
    for (Iterator iterator = jObject.keys(); iterator.hasNext();) {  String key = iterator.next();  jsonObject.put(key, jObject.get(key)); }
  • hashset(2种遍历方式)

    千次阅读 2018-03-30 14:25:04
    //hashset(2种遍历方式) Set&lt;String&gt; test = new HashSet&lt;String&gt;(); test.add("1"); test.add("2"); test.add("... Iterator&lt;Str
  • Iterator循环的用法

    千次阅读 2018-08-02 11:03:37
    一般遍历list的时候,我们习惯下面的写法,但这种写法有缺陷,不能及时释放iterator的内存(?). Java代码  Iterator&lt;String&gt; iterator = list.iterator(); while (iterator.hasNext()) { String ...
  • ILSpy反编译Unity协程

    千次阅读 2017-03-30 01:53:50
    直接用ILSpy或类似工具反编译出的C#脚本里协程和编写时明显不同: 无参数协程示例: private IEnumerator startCt_result() { ScGame.c__IteratorE c__IteratorE = new ScGame.c__IteratorE(); c__IteratorE.<>f__...
  • 迭代器Iterator基本用法--集合遍历

    千次阅读 2018-10-09 18:15:27
    欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 ...斜体 Ctrl + I...
  • 在C++中,流(stream)也可以看做是容器,因而也有相应的iterator来遍历流中的内容,其中就有本文要介绍的两个流迭代器:istreambuf_iterator和istream_iterator,这两个迭代器的用法和区别可以用一下两段代码来体现...
  • Design Pattern - IteratorC#

    万次阅读 多人点赞 2019-03-13 14:12:45
    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!... Definition Provide a way to access the elements of an aggregate object sequentially without exposing its ...
  • 迭代器模式(Iterator

    万次阅读 2013-02-06 14:19:24
    迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。  当你需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,就应该考虑使用迭代器模式。另外,...
  • ArrayList输出的几种方法

    万次阅读 2016-07-08 16:37:21
    ArrayList输出的几种方法!!! ...import java.util.Iterator; import java.util.List; public class ArrayList1 { public static void main(String args[]) { List list = new ArrayList();
  • HashSet的三种输出方式

    千次阅读 2018-02-08 15:15:43
    import java.util.HashSet;...import java.util.Iterator; public class HashSetOutputDemo { /** * HashSet的三种输出方式 * 1、toString * 2、foreach * 3、Iterator */ public static void...
  • List 删除指定元素

    万次阅读 2011-11-24 11:09:33
    由于jdk 1.5推出了快速便利 for each,我们在编码过程中便利都是for each , 格式如下 for(Object o : objList) { ... } 现在的场景是,需要删除objList中的某几个元素,自然而然,我们会习惯性的写下如下语句: ...
  • LinkedList 的所有遍历方式

    千次阅读 2016-07-29 20:31:47
    package com.nine;import java.util.Iterator; import java.util.LinkedList;public class Test { public static void main(String[] args) { LinkedList linkedList = new LinkedList(); linked
  • C#的枚举器和迭代器
  • 5 JDK内置迭代器 为了让开发人员能够更加方便地操作聚合对象,在Java、C#等编程语言中都提供了内置迭代器。在Java集合框架中,常用的List和Set等聚合类都继承(或实现)了java.util.Collection接口,在Collection...
1 2 3 4 5 ... 20
收藏数 14,971
精华内容 5,988
关键字:

c#iterator()