程序清单
public class CollectingIntoMaps {
public static class Person{
private int id;
private String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
//创建流
public static Stream<Person> people(){
return Stream.of(new Person(1,"阿花"),new Person(2,"桂花"),new Person(3,"春花"));
}
public static void test(){
Map<Integer,String> idToName=people().collect(Collectors.toMap(Person::getId,Person::getName));
System.out.println("idToName:"+idToName);
Map<Integer,Person> idToPerson=people().collect(Collectors.toMap(Person::getId, Function.identity()));
System.out.println("idToPerson:"+idToPerson.getClass().getName()+": "+idToPerson);
idToPerson=people().collect(Collectors.toMap(
Person::getId,Function.identity(),(existringValue,newVlue)->{throw new IllegalStateException();
}, TreeMap::new
));
}
//locale映射表存储不同国家的语言
public static void localLanguage(){
Stream<Locale> localeStream=Stream.of(Locale.getAvailableLocales());
Map<String,String> languagestream=localeStream.collect(Collectors.toMap(
Locale::getDisplayLanguage,
l->l.getDisplayLanguage(l),
(existringValue,newValue)->existringValue));
System.out.println("language:"+languagestream);
}
//localLanguage,一个国家的方言的集合
public static void localLanguageCountry(){
Stream<Locale> localeStream=Stream.of(Locale.getAvailableLocales());
Map<String, Set<String>> languageStreamSets=localeStream.collect(Collectors.toMap(
Locale::getDisplayCountry,//a
l-> Collections.singleton(l.getDisplayLanguage()),//b
(a, b)->{
Set<String> union=new HashSet<>(a);
union.addAll(b);
return union;
}));
System.out.println("localLanguageCountry"+languageStreamSets);
}
public static void main(String[] args) {
test();
localLanguage();
localLanguageCountry();
}
}