가장 긴 시간부터 내림차순으로 목록을 정렬하려고합니다. 이것은 내 방법입니다. 여기에서 몇 페이지를 사용하여 올바른 것으로 만들었지 만 코드에서 뭔가 잘못되어 잘못된 목록이 반환됩니다.interger를 기반으로 해시 맵 정렬
[team2, team1, team4, team3]
하지만 다음과 같이해야한다 : 여기
public static ArrayList<String> winnerIs(List<HP> hp){
//System.out.println("1");
int size = hp.size();
//System.out.println(size);
ArrayList<HP> listofWinner = new ArrayList<HP>();
Map<String, Integer> map = new HashMap<String, Integer>();
for(int i = 0; i < size; i++){
listofWinner.add(hp.get(i));
map.put(hp.get(i).getName(), hp.get(i).TD1());
//System.out.println(hp.get(i).getName()+" "+hp.get(i).TD1());
}
//sort based on time
ArrayList<String> keys = new ArrayList<String>(map.keySet());
//System.out.println("---------------");
/*for(int i = 0; i < keys.size(); i++){
//wn.add(keys.get(i));
System.out.println("here "+keys.get(i));
}*/
//System.out.println("---------------");
ArrayList<String> wn = new ArrayList<String>();
//System.out.println("---------------");
for(int i = keys.size()-1; i >= 0; i--){
wn.add(keys.get(i));
}
return wn;
}
는 reurns 무엇
시간이 동일한 경우는 문제가되지 않습니다
[team4, team3, team2, team1]
, 우리가 더 필요 시간, 나는 코드의 어떤 부분이 잘못된 것인지 잘 모르겠다.
here 2
here 9
here 0
here 0
그래서 난 stackoverflouw의 페이지 중 하나를 사용하고 난이 해결책을 발견 : 난 아직 여기에 수정되지 않은 본
ArrayList<Integer> s = new ArrayList<Integer>(map.values());
Collections.sort(keys);
//System.out.println("---------------");
for(int i = 0; i < s.size(); i++){
//wn.add(keys.get(i));
System.out.println("here "+s.get(i));
}
결과를 사용하는 경우에도
는 반환 것입니다 :
public static ArrayList<String> winnerIs(List<HumanPlayer> hp){
//System.out.println("1");
int size = hp.size();
//System.out.println(size);
ArrayList<HumanPlayer> listofWinner = new ArrayList<HumanPlayer>();
Map<String, Integer> map = new HashMap<String, Integer>();
for(int i = 0; i < size; i++){
listofWinner.add(hp.get(i));
map.put(hp.get(i).getName(), hp.get(i).getTimeDriver1());
//System.out.println(hp.get(i).getName()+" "+hp.get(i).getTimeDriver1());
}
map.entrySet().stream()
.sorted(Map.Entry.<String, Integer>comparingByValue().reversed())
.limit(1000)
.forEach(System.out::println);
return null;
}
이 정확한 목록을 반환하지만이 무엇인지 확실하지 않다 : .limit(1000)
또한 어떻게 이것을 목록과 동일하게 할 수 있습니까?
실제로 정렬하지 않고 정렬하지 않습니다. 'HashMap'은 정렬되지 않은 맵입니다. 대신에'LinkedHashMap'을 사용하거나'Collections.sort'로 결과리스트를 정렬하십시오. –
이름을 키로두고 나중에 얻은 keyset()을 정렬합니다. 나는 TD1()이 무엇인지 모르지만, 당신이 그 때 정렬하고자하는 시간이라면 당신은 맵이 아닌 키를 정렬해야한다. – Amit
@ keySet() 대신 valueSet()을 사용해야하는 이유는 무엇입니까? –