Java Collections-the 不重复的字数

Java Collections-the number of words without repetition

我想创建一个方法,我们将 text(String) 作为输入参数。 该方法将 return 个单词不重复。 例如:“猫、狗、猫、鸟、猴” returnvalue:4

如何比较每个 Collections 项目? 我已经拥有的:

public class WordsCounter {
public static void main(String[] args) {
    uniqueWordsCounter("cat, dog, Cat, Bird, monkey");
}

public static void uniqueWordsCounter(String text) {

    String processedText = text.toLowerCase().replaceAll(",", "");
    String[] words = processedText.split("\s");
    List<String> wordsList = Arrays.asList(words);
}
}

在使用分隔符 ","" 分隔字符串后,您可以使用集合来跟踪字符串中存在的所有唯一元素 在您的示例中,您保持 cat 和 Cat 相同(忽略大小写)。因此,您可以使用此逻辑。

public class WordsCounter {
    public static void main(String[] args) {
        int count = uniqueWordsCounter("cat,dog,Cat,Bird,monkey");
        System.out.println(count);
    }

    public static int uniqueWordsCounter(String text) {

        String str[] = text.split(",");
        Set<String> set = new HashSet<>() ; 
        for( String temp : str)
        {
            if ( !set.contains(temp.toLowerCase()))
            {
                set.add(temp);
            }
        }
        return set.size(); 
    }
}

输出为

4

一种方法是使用 distinct() operation from the stream API:

import java.util.*;

public class WordsCounter {
    public static void main(String[] args) {
        uniqueWordsCounter("cat, dog, Cat, Bird, monkey");
    }

    public static void uniqueWordsCounter(String text) {
        String[] words = text.toLowerCase().split(",\s*");
        List<String> wordsList = Arrays.asList(words);
        System.out.println(wordsList);
        System.out.println("Count of distinct elements: "
                           + wordsList.stream().distinct().count());
    }
}

示例运行:

$ java Demo.java
[cat, dog, cat, bird, monkey]
Count of distinct elements: 4

请注意在逗号后跟可选空格而不是替换逗号然后拆分,以帮助简化事情。