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

遍历字符串列表以获得最短的单词?

严亦
2023-03-14

列表(lst):[快速,棕色,狐狸,跳跃,越过,懒惰,狗]

我正在尝试返回最短单词的集合。(狗,狐狸,the)

public Collection<String> getShortestWords() {

    ArrayList<String> newlist = new ArrayList<String>();


    for(int i = 0; i < lst.size(); i++){
        if(lst.get(i).length() > lst.get(i+1).length()){
            newlist.add(lst.get(i+1));
        }



    }return newlist;
}

我通过扫描文本文档实现了这一点,但我必须先将其转换为列表,以删除不必要的标点符号和数字。但我犯了一个错误,所以现在我需要遍历列表而不是文件。

这是我的老逻辑:

String shortestWord = null;
String current;
while (scan.hasNext()) {    //while there is a next word in the text
        current = scan.next();  //set current to the next word in the text
        if (shortestWord == null) { //if shortestWord is null
            shortestWord = current; //set shortestWord to current
            lst.add(shortestWord);  //add the shortest word to the array
        }
        if (current.length() < shortestWord.length()) { //if the current word length is less than previous shortest word
            shortestWord = current; //set shortest word to the current
            lst.clear();    //clear the previous array
            lst.add(shortestWord);  //add the new shortest word
        }
        else if(current.length() == shortestWord.length()){ //if the current word is the same length as the previous shortest word
            if(!lst.contains(current))

            lst.add(current);

            }
        }
        return lst;
}

共有1个答案

通安宁
2023-03-14

使用带有自定义比较器的Collections.min获取最短单词的长度,然后在长度等于最低时将每个对象添加到结果列表中。

int minLength = Collections.min(yourListOfString, new Comparator<String>() {
                       @Override
                       public int compare(String arg0, String arg1) {
                           return arg0.length() - arg1.length();
                       }
                 }).length();

for(String s : yourListOfString)
{
    if(s.length() == minLength)
    {
       if(!yourResultList.contains(s))
           yourResultList.add(s);
    }
}

从文档中,比较方法必须返回

作为第一个参数的负整数、零或正整数小于、等于或大于第二个参数。

 类似资料:
  • 问题内容: 我有这样定义的多行字符串: 我们用作我正在编写的解析器的测试输入的字符串。解析器功能接收-object作为输入并对其进行迭代。它还确实直接调用该方法以跳过行,因此我确实需要一个迭代器作为输入,而不是可迭代的。我需要一个迭代器,它可以在字符串的各个行之间进行迭代,就像-object可以在文本文件的行之间进行迭代一样。我当然可以这样: 是否有更直接的方法?在这种情况下,字符串必须遍历一次以

  • 问题内容: 我有一个列表-myList-每个元素都是一个字典。我希望遍历此列表,但是每次只在每本词典中使用一个属性-“ age”来表示有趣。我也对保持迭代次数感兴趣。 我做: 但是我想知道是否还有更多的pythonic。有小费吗? 问题答案: 您可以使用生成器仅获取年龄。 而且,是的,不要使用分号。

  • 问题内容: 如何遍历Java中的字符串? 我正在尝试使用foreach样式进行循环 问题答案: 如果要使用增强循环,可以将字符串转换为charArray

  • 这不只是为每个属性做一堆if/else if用例吗?

  • 问题内容: 在Java中,迭代字符串中所有字符的最快方法是: 或这个: 编辑: 我想知道的是,在长时间的迭代过程中重复调用该方法的开销是否小于或大于在开始时执行一次单次调用然后在迭代过程中直接访问数组的开销。 如果有人能够针对不同的字符串长度提供可靠的基准测试,那将是非常不错的,同时考虑到JIT的预热时间,JVM的启动时间等,而不仅仅是两个调用之间的区别。 问题答案: 在我的AMDx64 8cor