我想修改list里边某一个值,这样改过之后其他值都为NULL了,请问怎么应该怎么修改某一个值


for (int i=0;i<list.size();i++){
            Sku_make_up sku_make_up=new Sku_make_up();
            sku_make_up.setSumspsdsb(list.get(i).getSpspend()+list.get(i).getSbspend()+list.get(i).getSdspend());
            list.set(i,sku_make_up);
        }

我想修改list里边某一个值,这样改过之后其他值都为NULL了,请问怎么应该怎么修改某一个值

你这循环不是把所有的都改掉了么?直接通过下标修改就行了
int i=3;
Sku_make_up sku_make_up = new Sku_make_up();
sku_make_up.setSumspsdsb(list.get(i).getSpspend() + list.get(i).getSbspend() + list.get(i).getSdspend());
list.set(i, sku_make_up);

把下面这个对象改成list(i)

img


new了一个空对象:
Sku_make_up sku_make_up=new Sku_make_up();
然后只给这个属性赋值:
sku_make_up.setSumspsdsb() 
其他不为空 就见鬼了;

Sku_make_up sku_make_up=new Sku_make_up();
替换成
Sku_make_up sku_make_up = list.get(i);


你到底要修改哪一个啊?你得在循环里判断哪个时你要修改的,然后再修改啊

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/668557
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:关于list添加null的问题
  • 除此之外, 这篇博客: 【测试原理与设计】理解常见异常值测试-null、空值中的 3.1.4 List返回为null 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • List也是我们最常用的集合之一了,当list为空时,查看如下测试代码

    getList方法获取list并计算大小

    @Test
     void testListNull(){
         List<String> list = null;
         getList(list);
     }
     private void getList(List<String> list){
         list.size();
     }
    

    测试结果:
    在这里插入图片描述
    结果分析:
    可见list入参如果没有做null的判断处理,也有空指针异常的风险,因此测试中也是我们需要关注的点。

  • 以下回答由chatgpt基于相关博客总结生成:

    我可以使用以下几种方案之一来修改list中的某个值,并将其他值变为NULL:

    1.使用jdk8及以上的方法,用list.removeIf(Objects::isNull)来删除所有为null的元素,然后将需要修改的值添加到list中。

    Example:

    List<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add(null);
    list.add("d");
    System.out.println(list);
    
    list.removeIf(Objects::isNull);
    list.set(1, "newVal");
    list.replaceAll(s -> null);
    
    System.out.println(list); 
    

    输出的结果会是:

    [a, b, c, null, d]

    [a, newVal, null]

    2.使用apache common包中的CollectionUtils.filter(list, PredicateUtils.notNullPredicate())方法来过滤掉为null的元素,然后将需要修改的值添加到list中。

    3.使用谷歌guva库中的Iterables.filter(list, Predicates.notNull())方法来过滤掉为null的元素,然后将需要修改的值添加到list中。

    4.使用循环来遍历list中的元素,将需要修改的值设置为list中对应元素的值,然后将其他值设为null。

    注意:在处理list和map操作时,一定要先进行null处理,即判断list是否被初始化,或使用空判断方法来过滤null值。