Java 如何计算数组中的唯一元素?只要有主意

Java 如何计算数组中的唯一元素?只要有主意,java,arrays,unique,elements,Java,Arrays,Unique,Elements,例如:字符串[]str={M1,M1,M1,M2,M3}; 最推荐的答案是HashSet。哪些方法或者你有更好的想法?除非你想自己实现,否则一套方法是最好的选择。集合将只允许添加唯一元素,并将自动筛选重复项 new HashSet(Arrays.asList(str)).size(); HashSet功能的工作原理如下: 将为对象计算哈希值。接下来,集合检查是否有任何具有相同哈希值的对象。等于新值。如果是,则忽略新值。如果不是,则将其添加到集合中 如果您将所有内容添加到集合中,然后询问其大小,

例如:字符串[]str={M1,M1,M1,M2,M3};
最推荐的答案是HashSet。哪些方法或者你有更好的想法?

除非你想自己实现,否则一套方法是最好的选择。集合将只允许添加唯一元素,并将自动筛选重复项

new HashSet(Arrays.asList(str)).size();
HashSet功能的工作原理如下:

将为对象计算哈希值。接下来,集合检查是否有任何具有相同哈希值的对象。等于新值。如果是,则忽略新值。如果不是,则将其添加到集合中


如果您将所有内容添加到集合中,然后询问其大小,您将获得唯一元素的数量。

我更喜欢使用本机提供的内容。你的要求是什么

您可以执行以下操作-

Set<String> set = new HashSet<String>(Arrays.asList(str));
set.size();
你也可以试试这个

    String[] str = {"M1","M1","M1","M2","M3"};
    HashMap<String,String> map=new HashMap<>();
    for(String i:str){
        map.put(i, i);
    }
    System.out.println(map.keySet().size());

与在其他答案中创建临时列表不同,您还可以使用:

Set<String> set = new HashSet<> ();
Collections.addAll(set, str);
int countUnique = set.size();

您不喜欢使用集合的哪一部分?如果没有任何外部约束,例如保留唯一元素的原始顺序、不使用内置项或不消耗任何额外内存,我也建议使用哈希集合。