当前位置: 首页 > 知识库问答 >
问题:

Java-列表中的所有元素变得相同

方心思
2023-03-14

我在使用for循环将元素分配到List时遇到了麻烦。以下是我遇到麻烦的代码部分:

private static List<String[]> modify(List<String[]> data) {
    List<String[]> data2 = new ArrayList<>();
    for (int i=0; i<data.size(); i++) {
        String[] block = data.get(i);
        // some code here to modify the contents of block
        data2.add(block);
    }
    return data2;
}

出于某种原因,该方法返回一个所有元素完全相同的列表。我试着输出列表元素,看看这是在哪里发生的,它似乎是在循环之外发生的。例如:

private static List<String[]> modify(List<String[]> data) {
    List<String[]> data2 = new ArrayList<>();
    for (int i=0; i<data.size(); i++) {
        String[] block = data.get(i);
        // some code here to modify the contents of block
        data2.add(block);
        System.out.println(Arrays.toString(data2.get(i));
    }
    return data2;
}

显示不同元素的列表,而这:

private static List<String[]> modify(List<String[]> data) {
    List<String[]> data2 = new ArrayList<>();
    for (int i=0; i<data.size(); i++) {
        String[] block = data.get(i);
        // some code here to modify the contents of block
        data2.add(block);
    }
    for (int i=0; i<data2.size(); i++) {
        System.out.println(Arrays.toString(data2.get(i)));
    return data2;
}

显示仅由相同元素组成的列表。在我看来,这些元素被正确地添加到for循环内部的列表中,但最终却变得完全相同。这是为什么?我该怎么解决?

共有2个答案

谢善
2023-03-14

奇怪的是,你居然能让这段代码运行。代码中有一个明显的语法错误:

private static List<String[]> modify(List<String> data) {
...
  String[] block = data.get(i);

您的是一个由String组成的数组,而data.get()返回一个字符串。在后面的片段中,大括号是不匹配的,所以它也不应该被编译。如果您将'}'放在System.out.println(...);之后,并使参数类型为List

叶稳
2023-03-14

你可能应该做一个临时字符串来进行操作,初始化你的String数组,然后用你的数据填充它,然后像这样传递给data2:

private static List<String[]> modify(List<String> data) {
    List<String[]> data2 = new ArrayList<>();
    for (int i=0; i<data.size(); i++) {
        String tempString = data.get(i);
        String[] block = new String[255];
        // some code here to modify the contents of block
        // actually fill block with data
        block.add("modified data");
        block.add("more manipulated data");
        data2.add(block);
    }
    return data2;
}

编辑这个应该可以解决无编译问题!

 类似资料:
  • 问题内容: 我有一个对象列表,其中每个对象返回。我如何使用Java 8流仅获得一个? 类具有以下方法; 我有 我正在尝试的是 但是上面的行没有返回 ,而是 我不想要的。 问题答案: 您应该用来从包含在主列表中每个对象中的列表中创建一个列表。请检查; 该调用适用于列表中包含with 的情况,因为这将导致下一行,因此我们应该将其过滤掉。还有其他方法可以实现这一点; -- -- 您可以按如下方式包含来自

  • 问题内容: 我需要以下功能: 输入: 输出: 如果输入列表中的所有元素使用标准相等运算符求值彼此相等; 除此以外。 性能:当然,我不希望产生任何不必要的开销。 我觉得最好: 遍历列表 比较相邻元素 和AND所有结果布尔值 但我不确定最Pythonic的方法是什么。 问题答案: 通用方法: 单线: 也是单线的: 这三个版本之间的区别在于: 在内容中必须是可哈希的。 并且可以使用任何迭代器,但chec

  • 问题内容: 有人告诉我 编写一个函数square(a),该函数接受一个数字数组a并返回一个包含每个平方值的数组。 起初,我有 但是,由于我正在打印,而且没有像被问到的那样返回,因此这不起作用。所以我尝试了 但这仅平方我数组的最后一个数字。我如何才能使整个列表平方? 问题答案: 您可以使用列表理解: 或者您可以: 或者,您可以使用发电机。它不会返回列表,但是您仍然可以迭代它,并且由于不必分配整个新列

  • 我是冬眠新手,不会RTFM,所以我希望有人能帮我节省很多时间。 我的数据库中的对象之间有多对多的关系。假设员工和工作。 我想选择分配给给定员工的所有作业。我的对象乔布斯有一个正在处理它的所有员工的列表。所以,在java中,它应该是:作业job.employees.contains(员工)。除了我需要把它变成一个Hibernate查询什么的。 现在,我在选择所有东西后,正在Java中使用蛮力。 如何

  • 我看到一个问题,要求它找到所有相邻子阵列的最小值。例如,对于数组A=[1,2,3],答案将是一个包含[1,2,3,1,2,1]的数组B<怎么做- 我所做的是,构建了一个段树,但是它不包含所有连续子数组的最小值。 我也不认为我可以使用“脱钩”,因为我不必在特定长度的子数组中找到最小值。 那么,我如何获得所有连续子阵列(B阵列)的最小值?

  • 我有一个java流,其中我必须只对一些对象应用操作,但我希望得到具有相同元素数的流。例如 我有用户类。 我想增加50个现有余额为500或以上的用户的余额。在返回列表中,我还需要未修改余额的用户, 回报应该是 和原来的顺序一样,但是记录被修改了,这符合条件。任何想法我怎么能用流和功能方式做到这一点,没有如果,等等 我尝试了方法,但它只是将过滤后的值传递到下游。