慕婉清6462132
2022-12-15 16:40:41
我目前有三個對象類,Transaction、User 和 Group。Transaction 收集:id、付款人、日期、描述、金額和涉及的用戶 ID 的 ArrayList。這非常有效,但通過遍歷用戶以查找哪個用戶是誰的方法添加了許多代碼行。我的問題是,我可以有一個 ArrayList *partecipants = new ArrayList; 哪個有所有用戶的參考?class Transaction{ private static AtomicInteger count = new AtomicInteger(0); private int id = count.incrementAndGet(); private String paid; private Date date; private String message; private Double amount; private ArrayList<Integer> users = new ArrayList<Integer>();
1 回答

蝴蝶不菲
TA貢獻1810條經驗 獲得超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()));
或者更傳統地說:
usersById = new HashMap<>();
for(User u : users) {
usersById.put(u.getId(), u);
}
現在要通過 id 查找用戶,您可以使用它(具有O(1)性能):
User user = usersById.get(id);
添加回答
舉報
0/150
提交
取消