TreeMap
не допускает дублирование, поэтому вместо этого используйте LinkedMultiValueMap
из
org.springframework.util.LinkedMultiValueMap
сохранить и затем отсортировать.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
public class ds {
public static void main(String[] args) {
MultiValueMap<Double, String> map = new LinkedMultiValueMap<Double, String>();
map.add(8.9, "g");
map.add(4.6, "h");
map.add(10.5, "a");
map.add(10.5, "b");
map.add(9.6, "c");
map.add(8.6, "d");
map.add(8.6, "e");
map.add(8.0, "f");
map.add(2.8, "i");
MultiValueMap<Double, String> filteredMap = filter(5, map);
System.out.println(filteredMap.toString());
}
public static MultiValueMap<Double, String> filter(int numberOfResults,
MultiValueMap<Double, String> map) {
MultiValueMap<Double, String> result = new LinkedMultiValueMap<Double, String>();
List<Double> keys = new ArrayList<Double>(map.keySet());
Collections.sort(keys, Collections.reverseOrder());
for (Double key : keys) {
if (result.size() <= numberOfResults) {
result.put(key, map.get(key));
} else {
break;
}
}
return result;
}
}