将 List<string> 连接到 Java 中的数组末尾

Concatenate a List<string> to end of array in Java

我有这个代码:

public class Test3 {

public static void main(String[] args) throws IOException {
    List<String> answers = new ArrayList<>();
    answers.add("Yes");
    answers.add("No");
    try (BufferedReader br = new BufferedReader(new FileReader("D://new.csv"))) {
        String line;
        while ((line = br.readLine()) != null) {
            for (int i = 0; i < answers.size(); i++) {
                String[] sae = line.split(",");
                sae = Arrays.copyOf(sae, sae.length + 1);
                sae[sae.length - 1] = answers.get(i);
                System.out.println(Arrays.toString(sae));
            }

        }
    }
}

} 输出为:

["something", "hello", Yes]
["something", "hello", No]
["abc", "bye", Yes]
["abc", "bye", No]

我正在读取一个 csv 文件并将其拆分。我正在通过 for 循环连接一个 list<string>,但我在最后两次得到了 list<string>。我怎样才能阻止它这样做?

我想要的输出是:

["something", "hello", Yes]
["abc", "bye", No]

您可以创建一个计数器并在每次阅读一行时递增它并且:

  • 如果您的 csv 中的行与答案中的行匹配:

    sae[sae.length - 1] = answers.get(计数器);

  • 否则你可能想从头开始:

    sae[sae.length - 1] = answers.get(计数器 % answers.size());

移除你的 for 循环,你不需要它

您正在为 .csv 文件中的每一行遍历整个 answers 数组。

public static void main(String[] args) throws IOException {
    List<String> answers = new ArrayList<>();
    answers.add("Yes");
    answers.add("No");
    try (BufferedReader br = new BufferedReader(new FileReader("new.csv"))) {
        String line;
        int i = 0;
        while ((line = br.readLine()) != null) {
            String[] sae = line.split(",");
            sae = Arrays.copyOf(sae, sae.length + 1);
            sae[sae.length - 1] = answers.get(i%answers.size());
            System.out.println(Arrays.toString(sae));
        }
    }
}

Lukas Resch 提到了一个很好的答案,这是它的代码。