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

我目前有三个对象类,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>();


慕婉清6462132
浏览 56回答 1
1回答

蝴蝶不菲

一个简短的例子:假设您有一个简单的User课程:public class User {&nbsp; &nbsp; private int id;&nbsp; &nbsp; private String name;&nbsp; &nbsp; // 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) {&nbsp; &nbsp; usersById.put(u.getId(), u);}现在要通过 id 查找用户,您可以使用它(具有O(1)性能):User user = usersById.get(id);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java