import com.google.common.collect.Maps; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Maps.uniqueIndex(Iterable<V> values, Function<? super V, K> keyFunction): * 使用场景:有一组对象,它们在某个属性上有独一无二的值,而我们希望按照这个属性找到对象。 * 该方法返回一个Map,键为属性值,值为属性值对应的对象。 * */ public class MapTest { public static class User { private int id; private String 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 "User{" + "id=" + id + ", name='" + name + '\'' + '}'; } } public static void main(String [] args) { List<User> userList = new ArrayList<>(); User user1 = new User(); user1.setId(1); user1.setName("张三"); User user2 = new User(); user2.setId(2); user2.setName("李四"); userList.add(user1); userList.add(user2); Map<Integer, User> userMap = Maps.uniqueIndex(userList, User::getId); System.out.println(userMap); } }
// 结果:
{1=User{id=1, name='张三'}, 2=User{id=2, name='李四'}}