Java8使List转为Map

来源:互联网 发布:问答cms 编辑:程序博客网 时间:2024/05/22 09:40
import com.yang.test.User;import javax.jws.soap.SOAPBinding;import java.util.*;import java.util.function.Function;import java.util.stream.Collectors;public class Main {    public static void main(String[] args) {        List<User> userlist = new ArrayList<>();        for (int i = 0; i <10; i++) {            userlist.add(new User("张三"+i,i));        }        System.out.println(getAllages(userlist).size());        System.out.println(getUser2Map(userlist));        System.out.println(getUser2MapUser(userlist));        System.out.println(getUser2MapUser2(userlist));          System.out.println(getUser2MapUser3(userlist));    }    public static List<Integer> getAllages(List<User>userlist){        return  userlist.stream().map(user -> user.getAge()).collect(Collectors.toList());    }    public static Map<Integer,String> getUser2Map(List<User>userlist){        return userlist.stream().collect(Collectors.toMap(User::getAge,User::getName));    }    public static Map<Integer,User> getUser2MapUser(List<User>userlist){        return userlist.stream().collect(Collectors.toMap(User::getAge,User-> User));    }    /**     * 比较优雅的写法是这样的     * @param userlist     * @return     */    public static Map<Integer,User> getUser2MapUser2(List<User>userlist){        return userlist.stream().collect(Collectors.toMap(User::getAge, Function.identity()));    }    /**     * 重复key的情况下 简单的使用后者覆盖前者的     */    public static Map<Integer,User> getUser2MapUser3(List<User>userlist){        return userlist.stream().collect(Collectors.toMap(User::getAge, Function.identity(),(key1,key2)->key2));    }    /**     *指定map的具体实现     * @param userlist     * @return     */    public static Map<Integer,User> getUser2MapUser4(List<User>userlist){        return userlist.stream().collect(Collectors.toMap(User::getAge, Function.identity(),(key1,key2)->key2, LinkedHashMap::new));    }}