gpt4 book ai didi

java - 通过另一个数组列表刷新数组列表

转载 作者:行者123 更新时间:2023-12-02 06:48:56 25 4
gpt4 key购买 nike

我有这个代码:

public class Server{
public static ArrayList<Server> all;

public int id;
public int sid;

public Server(int id){
thid.id = id;
sid = fetchSidFromDB(id);
}

public Server(int id, int sid){
thid.id = id;
sid = sid;
}

public static void loadAll(){
//Assume that I fill 'all' with the servers from the db
all = new ArrayList<Server>();
}

//gets only a list of 'id's with out the sid
public static void refreshAll(){
}
}

//in the main
Server.loadAll();
Server.refreshAll();

我希望 refreshAll 将从数据库获取新列表并执行以下操作:

  1. 如果id 不在对象中 - 将其插入
  2. 如果 id 在对象中,但 sid 不同 - 替换它
  3. 如果 all 中有一个 id 不在新列表中 - 将其删除

这很简单,但据我所知,我只能这样做:

for(...){
for(...){
}
for(...){
}

for 内有一个用于步骤 1 和 2,for 内有一个用于步骤 3。

不知道是否有更有效的方法。

最佳答案

您可以通过两种方式提高效率(不包括 Yogendra Singh 评论中的方法):

  1. 使用以 id 作为键的 HashMap。如果您需要元素的顺序与从数据库收到的顺序相同,请使用 LinkedHashMap

  2. 如果您可以确保列表按 id 排序,则只需使用单个循环并使用迭代器前进到第二个列表。

关于java - 通过另一个数组列表刷新数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18277544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com