<>for循环
import com.google.common.base.Function; import com.google.common.collect.Maps;
import java.util.ArrayList; import java.util.HashMap; import java.util.List;
import java.util.Map; public class ListToMap { public static void main(String[]
args) { List<User> userList = new ArrayList<>(); User user1 = new User();
user1.setId(1L); user1.setAge("12"); User user2 = new User(); user2.setId(2L);
user2.setAge("13"); userList.add(user1); userList.add(user2); Map<Long, User>
maps = new HashMap<>(); for (User user : userList) { maps.put(user.getId(),
user); } System.out.println(maps); } public static class User { private Long
id; private String age; public Long getId() { return id; } public void
setId(Long id) { this.id = id; } public String getAge() { return age; } public
void setAge(String age) { this.age = age; } @Override public String toString()
{ return "User{" + "id=" + id + ", age='" + age + '\'' + '}'; } } }
<>使用guava
Map<Long, User> maps = Maps.uniqueIndex(userList, new Function<User, Long>() {
@Override public Long apply(User user) { return user.getId(); } });
<>使用JDK1.8
Map<Long, User> maps =
userList.stream().collect(Collectors.toMap(User::getId,Function.identity()));
看来还是使用JDK 1.8方便一些。另外,转换成map的时候,可能出现key一样的情况,如果不指定一个覆盖规则,上面的代码是会报错的。转成map
的时候,最好使用下面的方式:
Map<Long, User> maps = userList.stream().collect(Collectors.toMap(User::getId,
Function.identity(), (key1, key2) -> key2));
有时候,希望得到的map的值不是对象,而是对象的某个属性,那么可以用下面的方式:
Map<Long, String> maps =
userList.stream().collect(Collectors.toMap(User::getId, User::getAge, (key1,
key2) -> key2));

技术
©2019-2020 Toolsou All rights reserved,
MyBatis 新增数据 成功 返回 自增主键ID值用C语言做很简单的飞机游戏苹果不送充填器耳机真为环保?可能还是为了赚钱吧一个名叫“讨火车”的小村子 终于把火车讨来了使用easyPOI导入Excel数据QT:清空指定文件夹内的所有文件及目录json反斜杠问题3种Python数据结构,13种创建方法,这个总结,超赞!访客手机抓取方法改主意!特斯拉开始向欧洲市场交付中国造Model 3