gpt4 book ai didi

Java:查找列表中的每个唯一单词并将它们添加到新列表中

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:54:23 24 4
gpt4 key购买 nike

我正在尝试创建一种方法来查找列表中的每个唯一单词,然后将它们添加到新列表中。我尝试了以下方法:

   public static void countWords(){
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();

String inText = JOptionPane.showInputDialog(null, "Type in text");
int start = 0;

for(int i = 0; i < inText.length(); i++) {
if(inText.charAt(i) == ' ') {
list1.add(inText.substring(start,i));
start = i;
}
}
for(int a = 0; a < list1.size(); a++) {
for(int j = 0; j < a; j++) {
if(list1.get(a) != list2.get(j)) {
list2.add(list2.get(a));
}
}
}
}

当我运行程序并输入“hi hi hi”时,我得到了这个错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at RäknaOrd.countWords(RäknaOrd.java:24)
at RäknaOrd.main(RäknaOrd.java:6)

我该如何解决这个错误?我的方法是否有效?

最佳答案

Java 8 有一个很好的基于流的方法来返回一个删除了重复项的新列表:

List<String> list2 = list1.stream().distinct().collect(Collectors.toList());

同时拆分String得到 List<String>你可以避免这样的 for 循环:

List<String> list1 = Arrays.asList(inText.split(" "));

但请记住 list1在这种情况下是不可变的。

一个最小的演示示例是:

String inText = "hi hi hi";
List<String> list1 = Arrays.asList(inText.split(" "));
List<String> list2 = list1.stream().distinct().collect(Collectors.toList());
System.out.println(list2);

打印 [hi]

关于Java:查找列表中的每个唯一单词并将它们添加到新列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33630111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com