为了账号安全,请及时绑定邮箱和手机立即绑定

我可以拥有一个对象类型的 ArrayList,其中包含指向 Java 对象的指针列表吗?

我可以拥有一个对象类型的 ArrayList,其中包含指向 Java 对象的指针列表吗?

慕婉清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;

这个地图只会引用其他对象,所以占用空间很小(但仍然占用一些空间,就像一个索引)。


您可以像这样填写这张地图:


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);


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 55 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信