今天讀書遇到幾個問題
class Student {
String course, name, city;
public Student(String name, String course, String city) {
this.course = course;
this.name = name;
this.city = city;
}
public String toString() {
return course + ":" + name + ":" + city;
}
public String getCourse() {
return course;
}
}
List stds = Arrays.asList(
new Student("Jessy", "Java ME", "Chicago"),
new Student("Helen", "Java EE", "Houston"),
new Student("Mark", "Java ME", "Chicago"));
stds.stream()
.collect(Collectors.groupingBy(Student::getCourse))
.forEach((src, res) -> System.out.println(src));
這個分組出來會顯示
Java EE
Java ME
不管我怎麼換順序
都是根據字母排序
但是換成下面的程式碼就不是照字母了
public class Country {
public enum Continent {
ASIA, EUROPE
}
String name;
Continent region;
public Country(String na, Continent reg) {
name = na;
region = reg;
}
public String getName() {
return name;
}
public Continent getRegion() {
return region;
}
}
List couList = Arrays.asList(
new Country("Japan", Country.Continent.ASIA),
new Country("Italy", Country.Continent.EUROPE), new Country("Germany", Country.Continent.EUROPE));
/System.out.println(couList);/
Map<Country.Continent, List> regionNames = couList.stream().
collect(Collectors.groupingBy(Country::getRegion,
Collectors.mapping(Country::getName, Collectors.toList())));
System.out.println(regionNames);
這串在不加入註解部分時
不管我怎麼換順序 都會是先丟進去的那個組放後面
也就是顯示ASIA在後 EUROPE在前
但是我加入註解後
一樣的程式卻會變成ASIA在前 EUROPE在後
那我該如何判斷使用groupingBy後 它的排序問題?
拜託各位高手幫忙解惑
那我該如何判斷使用groupingBy後 它的排序問題?
groupingBy 就是「把相同的值 group 成一筆」,如此而已
跟排序沒有任何關係
而 Map 也不管你的順序
如果你要順序的話
請用LinkedHashMap
選我正解
那可以再請教一下候群組後面
它的排序是不是就是丟進去的順序?
像Italy就會排在Germany前面?
誠心奉勸你
要排序就自己呼叫函式去 sort
愛怎麼sort就怎麼sort
不要將希望寄託在佛系資料型態
「只要將資料填進去,不做動作,他就會照我要的順序自動排好」