我可以有一个object类型的ArrayList,它有一个指向Java中对象的指针列表吗?

我可以有一个object类型的ArrayList,它有一个指向Java中对象的指针列表吗?,java,pointers,reference,Java,Pointers,Reference,我目前有三个对象类:事务、用户和组。。事务收集:id、付款人、日期、描述、金额和相关用户id的数组列表。这很好地工作,但是通过迭代用户的方法添加了许多行代码,以找到哪个用户是谁。我的问题是,我能有一个ArrayList*partecipants=新的ArrayList;哪个有所有用户的参考 class Transaction{ private static AtomicInteger count = new AtomicInteger(0); private int id = c

我目前有三个对象类:事务、用户和组。。事务收集:id、付款人、日期、描述、金额和相关用户id的数组列表。这很好地工作,但是通过迭代用户的方法添加了许多行代码,以找到哪个用户是谁。我的问题是,我能有一个ArrayList*partecipants=新的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>();
举个简单的例子:

假设您有一个简单的用户类:

假设您最初有一个列表:

List<User> users;
但是,如果用户列表很大,则速度可能会很慢

您可以将用户存储在地图中:

或者更传统地说:

usersById = new HashMap<>();

for(User u : users) {
    usersById.put(u.getId(), u);
}

您的多行代码可能很容易压缩-为什么不向我们展示您的相关代码?是的,但以拥有100万用户为例。迭代查找具有该ID的用户是非常低效的。因此,我认为在该ArrayList中引用用户会更好。。我知道可以用C语言完成,但我对java知之甚少。公共字符串getUserNameint id{//done String name=null;forUser user:general.users{ifuser.get_id==id{name=user.get_name;break;}}ifname==null{ambrogio.sendTextError;return null;}否则{return name;}听起来你想要一张地图,类似于Map usersById=newhashmap;像我建议的那样,一张地图可以做到这一点。无需迭代,只需执行字符串userName=usersById.getid。
users.stream().filter(u -> u.getId() == id).findFirst();
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);
}
User user = usersById.get(id);