public class Country {
private String countryCode;
private String countryName;
public Country(String countryCode, String countryName) {
super();
this.countryCode = countryCode;
this.countryName = countryName;
}
public String getCountryCode() {
return countryCode;
}
public void setCountryCode(String countryCode) {
this.countryCode = countryCode;
}
public String getCountryName() {
return countryName;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
@Override
public String toString() {
return "Country [countryCode=" + countryCode + ", countryName=" + countryName + "]";
}
}
逻辑
public class Java8_2_ListToMap {
public static void main(String[] args) {
Map<String, String> countryMaps1 = getSortedCountryMap(getCountryLists());
countryMaps1.forEach((k, v) -> System.out.println("Key is " + k + " Value is " + v));
}
private static List<Country> getCountryLists() {
return Arrays.asList(new Country("IN", "India"), new Country("US", "United States"),
new Country("GR", "Germany"), new Country("UK", "United Kingdom"));
}
private static Map<String, String> getSortedCountryMap(List<Country> countryLists) {
Map<String, String> countryMap = countryLists.stream()
.sorted(Comparator.comparing(Country::getCountryCode))
.collect(Collectors.toMap(Country::getCountryCode, Country::getCountryName));
return countryMap;
}
}
输出为
Key is IN Value is India
Key is UK Value is United Kingdom
Key is GR Value is Germany
Key is US Value is United States
默认情况下,collectors.tomap
创建一个HashMap
,该HashMap没有排序。有多个map
实现,它们是有序的,可能适合您的用例。
例如,您可以选择使用treemap
,它自动按自然顺序或按您选择的比较器对其键进行排序。
另一个选项是LinkedHashMap
,它会记住键的插入顺序。
// TreeMap
Map<String, String> countryMap = countryLists.stream()
.sorted(Comparator.comparing(Country::getCountryCode))
.collect(Collectors.toMap(Country::getCountryCode,Country::getCountryName, String::join, TreeMap::new));
// LinkedHashMap
Map<String, String> countryMap = countryLists.stream()
.sorted(Comparator.comparing(Country::getCountryCode))
.collect(Collectors.toMap(Country::getCountryCode,Country::getCountryName, String::join, LinkedHashMap::new));
我有一个类型的变量,其中item如下所示: 我想将其重新排序为,其中键是customerId,然后值是具有该客户ID的所有项的列表。
我有一个对象列表,需要根据特定的顺序排序。如下代码所示: 这也是当它得到排序,只有名称(“宝马”,“奥迪”,“奔驰”)的位置正在改变。我在汽车课上还有一个字段,那就是数量。数量将处于相同位置。这个职位也应该随着名字而改变。 我希望输出为,但实际输出为
我想使用Java流按对用户列表进行分组。 例如,我有。
问题内容: 我有以下查询,该查询基于逗号分隔的列表返回行 我希望此查询的结果以ID在列表中的顺序返回。SQL可以做到吗? 提前致谢 问题答案: 如果您需要输出以特定顺序显示,则需要使用服务器可以排序的内容来指定该顺序。不知道您要使用哪个引擎,一般的方案是创建一个临时表或使用行集构造函数将每个记录ID与所需的排序顺序配对。 例如(SQL Server)
问题内容: 我有地图,我想要一个列表,其中按其对应的值对键(最小到最大)进行了排序。我的尝试是: 但这只是给我一个条目列表,如何在不丢失顺序的情况下获得类型列表? 问题答案: 您说要按值排序,但是您的代码中没有。传递一个lambda(或方法引用)来告诉它您想如何排序。 而您想获得钥匙;用于将条目转换为键。
我正在使用Java8lambda,并希望使用返回。我所能想到的最好方法是使用等于的虚拟和调用以下