-4
я есть Связанная хэш-картаудалить дубликаты строк в LinkedHashMap
LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap();
, чьи набор ключей и значений, являются
50,Tam,medicine = 7
50,Pep,surgery = 3
50,Tam,surgery = 6
50,Ery,treatment = 2
60,cap,treatment = 3
60,syn,treatment = 5
60,syn,surgery = 6
60,pep,surgery = 5
60,pep,medicine = 3
мне нужно сгруппировать это основанный на первой строке т.е. ул [0]. затем удалите набор ключей, у которых либо str [1], либо str [2] повторяются и имеют наибольшее значение. некоторые вещи, как организовать его в порядке возрастания и удалить набор ключей, str [1] или str [2] повторяются и имеют наибольшее значение.
окончательный вывод должен быть
50,Ery,treatment=2
50,Pep,surgery=3
50,Tam,surgery=6 //should be deleted as in group 50 "surgery" is repeated above
50,Tam,medicine=7
60,cap,treatment=3
60,pep,medicine=3
60,pep,surgery=5 //should be deleted as in group 60 "pep" is repeated above
60,syn,treatment=5 //should be deleted as in group 60 "treatment" is repeated above
60,syn,surgery=6
public static LinkedHashMap sortHashMapByValuesD(Map passedMap) {
List mapKeys = new ArrayList(passedMap.keySet());
List mapValues = new ArrayList(passedMap.values());
Map<String, Integer> dUnique = new LinkedHashMap<>();
Collections.sort(mapValues);
Collections.sort(mapKeys);
LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap();
Iterator valueIt = mapValues.iterator();
while (valueIt.hasNext()) {
Object val = valueIt.next();
Iterator keyIt = mapKeys.iterator();
while (keyIt.hasNext()) {
Object key = keyIt.next();
String comp1 = passedMap.get(key).toString();
String comp2 = val.toString();
if (comp1.equals(comp2)) {
passedMap.remove(key);
mapKeys.remove(key);
sortedMap.put((String) key, (Integer) val);
break;
}
}
}
for (String sorted : sortedMap.keySet()) {
String[] dsort = sorted.split(",");
// System.out.println(sorted + sortedMap.get(sorted));
if (dUnique.get(dsort[0]) == null) {
dUnique.put(sorted, sortedMap.get(sorted));
System.out.println(dUnique.keySet());
} else {
for (int i = 1; i < dsort.length; i++) {
if (dUnique.get(dsort[i]) == null) {
dUnique.put(sorted, sortedMap.get(sorted));
} else {
dUnique.remove(sorted);
}
}
}
}
System.out.println(dUnique.keySet());
return sortedMap;
}
Что вы попробовали? – Ozzy
i сначала отсортировал его в порядке возрастания, затем сгруппировал его по первому элементу, а затем попытался удалить набор ключей. – Raj
Но здесь нет проблемы решить; вы только просили разрешения. Если вам нужна помощь быстрее, вам нужно задать конкретные вопросы о том, что не так с вашим решением и какие сообщения об ошибках (если они есть). – Ozzy