1 回答

TA貢獻1810條經(jīng)驗 獲得超4個贊
一個簡短的例子:
假設您有一個簡單的User課程:
public class User {
private int id;
private String name;
// etc
}
假設您最初擁有其中List的一個:
List<User> users;
通過 id 查找用戶可以這樣完成:
users.stream().filter(u -> u.getId() == id).findFirst();
但是,如果用戶列表很大,那可能會很慢。
您可以將用戶存儲在Map:
Map<Integer, User> usersById;
這個地圖只會引用其他對象,所以占用空間很?。ǖ匀徽加靡恍┛臻g,就像一個索引)。
您可以像這樣填寫這張地圖:
usersById = users.stream().collect(Collectors.toMap(User::getId, Function.identity()));
或者更傳統(tǒng)地說:
usersById = new HashMap<>();
for(User u : users) {
usersById.put(u.getId(), u);
}
現(xiàn)在要通過 id 查找用戶,您可以使用它(具有O(1)性能):
User user = usersById.get(id);
添加回答
舉報