Я знаю, как сортировать объекты любого типа с помощью Comparator
и Collections.sort()
, но я хочу знать, как я могу использовать Arrays.parallelSort()
для сортировки списка Карт? так как он способен сортировать только обычные массивы.Как использовать parallelSort() Java 8 для сортировки списка карт
Это мой код для сортировки с помощью Comparator
,
List<Map<String, Integer>> employees = new ArrayList<Map<String, Integer>>() {{
add(new HashMap<String, Integer>() {{put("position",5); put("id2", 9);}});
add(new HashMap<String, Integer>() {{put("position",1); put("id2", 1);}});
add(new HashMap<String, Integer>() {{put("position",2); put("id2", 2);}});
add(new HashMap<String, Integer>() {{put("position",4); put("id2", 5);}});
add(new HashMap<String, Integer>() {{put("position",1); put("id2", 1);}});
add(new HashMap<String, Integer>() {{put("position",4); put("id2", 7);}});
}};
Comparator<Map<String, Integer>> comparator = new Comparator<Map<String, Integer>>() {
@Override
public int compare(Map<String, Integer> o1,Map<String, Integer> o2) {
int nr1 = o1.get("id2");
int nr2 = o2.get("id2");
return Integer.compare(nr2, nr1);
}
};
Collections.sort(employees,comparator);
for (Map<String, Integer> s : employees){
System.out.println(s);
}
Arrays.parallelSort
имеет метод, называемый parallelSort(T[] a,Comparator<?super T> c)
, но я не знаю, как правильно его использовать.
Я попытался это до сих пор,
Arrays.parallelSort(new ArrayList<Map<String, Integer>>(employees.size()), comparator);
Ofcourse Я получаю эту ошибку,
The method parallelSort(T[], Comparator<? super T>) in the type Arrays is not applicable for the arguments (ArrayList<Map<String,Integer>>, Comparator<Map<String,Integer>>)
Я просто любопытно, если такой тип данных может быть отсортирован с помощью parallelSort
?
P.S: Я также знаю, как использовать Java 8 stream().sorted
для сортировки, но я не хочу его использовать.
Редактировать: Я сортирую id2
в порядке убывания.
Я думаю, что этот пост может вам помочь: [здесь] (http://stackoverflow.com/questions/25961018/sorting-a-list-in-parallel-without-creating-a-temporary-array-in-java -8) –