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