【问题标题】:How I can set a value to a List in Java [duplicate]如何在 Java 中为列表设置值 [重复]
【发布时间】:2020-12-09 15:09:55
【问题描述】:

在以下循环中,我如何创建一个新的 List(),但在我尝试设置值时遇到了问题:

ListlistOfString = new ArrayList(); listOfString.set(index, value);

谁能解释一下它是如何工作的?

【问题讨论】:

  • 你只能给变量赋值,但是方法返回values而不是变量。即使你有像int x = 1; int getX(){ return x;} 这样的方法并且你尝试调用getX(),它也会返回值2 而不是*variable 不是变量x。这就是announcementDTO.get(j) = new ArrayList<>();announcementResultBean.get(i) = new ArrayList<>(); 的问题
  • 我该如何解决它@Pshemo?
  • 你可以使用list.set(index, newValue)
  • 它不起作用@Pshemo,现在错误是: List 类型中的方法 set(int, noticeDTO) 不适用于参数 (int, new ArrayList( ))
  • 如果您的列表声明为List<announcementDTO>,则意味着它应该只包含announcementDTO 实例(或其子类型)。为什么要将ArrayList 放在那里?这就像尝试将catdogs 一起放在框中...

标签: java list arraylist


【解决方案1】:

与数组不同,您不能使用array[i] = val。你应该使用ArrayList.set:

// this must be set
announcementDTO.set(j, new ArrayList<>());
// this can still be get
announcementDTO.get(j).setIdShop(shopBean.getId());
announcementDTO.get(j).setNombreComercio(comercioBean.getNombre());
announcementDTO.get(j).setRazonSocial(comercioBean.getRazonSocial());

【讨论】:

  • 它不起作用@Aplet123,现在错误是: List 类型中的方法 set(int, noticeDTO) 不适用于参数 (int, new ArrayList( ))
  • @Gonzalo 那是因为您将announcementDTO 视为List&lt;AnnouncementDTO&gt; 而不是List&lt;List&lt;AnnouncementDTO&gt;&gt;List&lt;ArrayList&lt;AnnouncementDTO&gt;&gt;
  • 哦,这很难理解,但我试试@Aplet123
  • 嗨@Aplet 一个问题,原代码是announcementDTO[j] = new noticeDTO();我现在必须使用列表,而不是数组。你怎么看?
  • 就像我在回答中概述的那样:announcementDTO.set(j, new AnnouncementDTO())array[i] = v 替换为 arraylist.set(i, v)
猜你喜欢
  • 2014-03-26
  • 1970-01-01
  • 2014-02-23
  • 2018-09-26
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 2016-03-09
  • 2016-03-11
相关资源
最近更新 更多