精华内容
下载资源
问答
  • forreach循环虽然书写起来很整洁,但是在使用时也存在一定的局限性.forreach循环遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改....

    forreach循环虽然书写起来很整洁,但是在使用时也存在一定的局限性.


    forreach循环遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改.

    展开全文
  • 我有一个集合Collection我要删除其中一个元素,开始代码为 organizations = organizationDao.findAll(); //得到一个organization的集合 Organization org = organizationDao.findById(id);//要删除那个对象....
    今天在做项目时,遇到一个问题,先以解决,在这里吼一下,不要犯我的错误。 
    我有一个集合Collection<Organization>我要删除其中的一个元素,开始代码为
    organizations = organizationDao.findAll(); //得到一个organization的集合
    Organization org = organizationDao.findById(id);//要删除的那个对象
    Iterator iter = organizations.iterator();
    while(iter.hashNext()){
    Organization orgs = (Organization) iter.next();
    if(org.getId() == orgs.getId()){
    organizations.remove(orgs);//错误就在这里
    }


    }


    运行时它抛出一个异常 java.util.ConcurrentModificationException

    原因是因为:在Map或者Collection的时候,不要用它们的API直接修改集合的内容。对 Collection 或 Map 进行迭代操作过
    程中尝试直接修改 Collection / Map 的内容时,即使是在单线程下运行,
    java.util.ConcurrentModificationException 异常也将被抛出。


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


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


    后来代码改写成
    organizations = organizationDao.findAll(); //得到一个organization的集合
    Organization org = organizationDao.findById(id);//要删除的那个对象
    Iterator iter = organizations.iterator();
    while(iter.hashNext()){
    Organization orgs = (Organization) iter.next();
    if(org.getId() == orgs.getId()){
    iter.remove();
    }


    }
    展开全文
  • MongoDB中修改集合中的某个元素的值

    千次阅读 2013-05-27 16:57:07
    public static void main(String[] args) { ... 此文实现该功能重点在于 opruser.post.$.ppraise,我们在集合集合元素名中间添加 $ 用来更新符合查询条件第一个元素

    public static void main(String[] args) {
    String id = "51a31b1424c6f6929c8194a5";
    String mId = "51a31bdb24c6dafc9e6fc618";
    DBObject filter = new BasicDBObject();
    filter.put("_id", new ObjectId(id));
    filter.put("opruser.post.uuid", (mId));

    DBObject vals = new BasicDBObject();
    vals.put("$inc", 
    new BasicDBObject("opruser.post.$.ppraise",1));

    DBCollection.update(filter, vals);

    }

     此文中实现该功能的重点在于 opruser.post.$.ppraise,我们在集合和集合元素名中间添加 $ 用来更新符合查询条件的第一个元素




    展开全文
  • var list2 = list.Select(x => { x.Info = x.Info.Trim(new char[] { ':', ':' }); return x; }).ToList(); 注意有{}: x => { x.Info = x.Info.Trim(new char[] { ':', ':' }); return x;...
    
                var list2 = list.Select(x => { x.Info = x.Info.Trim(new char[] { ':', ':' }); return x; }).ToList();
    

    注意有{}:

    x => { x.Info = x.Info.Trim(new char[] { ':', ':' }); return x; }
    
        var list = Test();
        Console.WriteLine(list[11].Info);
        var list2 = list.Select(x => { x.Info = x.Info.Trim(new char[] { ':', ':' }); return x; }).ToList();
        Console.WriteLine(list[11].Info);
    

    输出:

    流水号:
    流水号
    

    参考:http://codingdict.com/questions/24974

    展开全文
  • 采用增强for循环与iterator修改集合或者数组中的内容
  • forEach语句可以修改集合/数组元素为对象值,但不可以修改数组元素为变量值。 forEach语句不能在集合/数组添加或删除对象。 二. 问题复现 1. 数组元素为变量 结论:当数组元素为变量时,forEach循...
  • List集合中元素的问题

    2019-08-28 10:22:10
    所以当修改了memberBeans集合中元素属性时候,bookBeans集合元素属性跟随改变,adapter在更新 时候也会看到 页面值也变化了;(集合存元素索引,两个集合存储是同一个元素的索引,一个集合修改其中一...
  • dict = [ _mutableArray objectAtIndex:indexPath.row ]; 返回的存储在容器中的指针,修改dict会影响到容器中的数值。
  • 我们往往会遇到要批量修改集合中元素的值,最笨办法就是foreach循环,但本文介绍几种优雅方法。 首先,我们准备好元素类和初始集合: 下面就是几种方法,目前并没有对性能做进一步测试,有兴趣童鞋...
  • 该变量每次初始化Iterator时候等于ArrayListmodCount,modCount记录了对ArrayList结构修改次数, 在通过Iterator对ArrayList进行结构的修改的时候都会将expectedModCount 与modCount同步, 但是如果在...
  • 这几天遇到一个问题,需要边迭代容器边删除容器中的元素,然后就出错了,看了几篇博客之后了解了原因这里就不重复记录了,只复现一下BUG和解决方法 BUG提示:java.util.ConcurrentModificationException 推荐博客:...
  • 文章目录方法一:采用for循环,并且从尾到头遍历方法二:使用递归方法三:通过泛型类实现IEnumerator 在foreach删除元素时,每一次...如果从头到尾正序遍历删除的话,有些符合删除条件的元素会成为漏网之鱼; 正...
  • List<string> str = new List<string>(); str.Add( "zs"); str.Add("ls"); str.Add( "ws" ); foreach(string s in str...有时候我们在foreach需要修改或者删除集合 可是这时候却报如下错误:集合...
  • 遍历集合的同时,删除集合中的元素。这时集合的list.size发生改变(因为删除了1个) 产生了错误。即在遍历集合的同时不能对集合进行删除操作。 下面代码 就是在遍历集合的同时,对集合进行了删除操作。 产生了如下...
  • 集合与数组相似,但他长度是可变 list集合继承了collection接口,list集合的实现类是ArrayList()。 如下: package com.test; import java.util.ArrayList; // import the ArrayList package import java...
  • 今天想要在循环遍历的过程中删除集合中的元素,但是报了一个这样的bug : java.util.ConcurrentModificationException: null可以翻译成“并发修改异常”。 测试时就报错了,后面也是上网查了下原因,不能用这种...
  • 修改集合 保留原集合,新增新集合 通过Apache Commons 通java 8 lambada 表达式 通过java while循环 @Test public void removeNullFromList() { List<Integer> list = Lists.newArrayList(null, 1...
  • 迭代器必定从属于某个容器,其作用就是用来遍历所属容器中的元素的! ii. 迭代器是在容器的数据视图之上进行迭代,因此不能再迭代过程中修改容器中的数据,否则会抛出异常!除非使用迭代器的专用方法对数据进行...
  • 一点很小的心得。众所周知,具有迭代接口的集合类可以用...比如ListView控件中的SelectItems是一个基于Items的子集合。如果需要删除所选项时,无法利用foreach来实现。这时候可以用类似于下面的代码了实现: wh...
  • 原因是,获取iterator时,初始化iterator会记住对应集合的元素个数,之后增加或删除了集合中的元素,那么集合送元素个数和 iterator中记录的个数就不一致了,会报错(报的错误和下文中相同,因为本质上问题根源是...
  • set(int index, E element) 用指定元素替换列表指定位置的元素(可选操作)。
  • 迭代器必定从属于某个容器,其作用就是用来遍历所属容器中的元素的!  ii. 迭代器是在容器的数据视图之上进行迭代,因此不能再迭代过程中修改容器中的数据,否则会抛出异常!除非使用迭代器的专用方法对数据进行...
  • package com.swift.lianxi; import java.util.HashMap; import java.util.Iterator; ...import java.util.Map;.../*1.请简述Map 特点 ...2.请简述HashMap特点 ...3.请简述LinkedHashMap特点 4.使用代码依次完成...
  • 如果从头到尾正序遍历删除的话,有些符合删除条件的元素会成为漏网之鱼; 正序删除举例: List<string> tempList = new List() { "a","b","b","c" }; for (int i = 0; i < tempList.Count; i++) { if ...
  • 使用迭代器遍历集合并删除或添加集合元素时,当集合中的数据发生变化是会抛出java.util.ConcurrentModificationException异常。 迭代器每次调用next(),都会检查两个变量是否相同 产生原因是由于源码中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,203
精华内容 1,281
关键字:

修改集合中的元素