Например: String[] str = {"M1","M1","M1","M2","M3"};
Наиболее рекомендуемый ответ - HashSet
. Какие методы или у вас есть лучшая идея?
Как посчитать уникальные элементы в массиве? Нужна только идея
Ответы (4)
Если вы не хотите реализовать это самостоятельно, вам подойдет Set
. Набор позволит добавлять только уникальные элементы и автоматически отфильтрует дубликаты.
Функциональность HashSet работает следующим образом:
Хэш вычисляется для объекта. Затем набор проверяет, является ли какой-либо из объектов с одинаковым хеш-значением .equals()
новым значением. Если это так, новое значение игнорируется. Если нет, то он добавляется в набор.
Если вы добавите все в набор, а затем спросите его размер, вы получите количество уникальных элементов.
Я предпочитаю использовать то, что уже предусмотрено изначально. В вашем требовании указано Set
.
Вы можете сделать следующее -
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();