gpt4 book ai didi

java - 对与 HashMap 连接的模型的 ArrayList 进行排序

转载 作者:行者123 更新时间:2023-11-29 19:09:02 25 4
gpt4 key购买 nike

我有一个模型数组列表和一个 HashMap 。模型类包含变量,如 id(int)、名称、地址等。 HashMap 包含 id(int) 和距离 (double)。我之前尝试过使用 Collection 对模型列表进行排序,但这里的问题是,我必须根据 hashmap 的距离值对 hashmap 进行排序,然后根据 hashmap 的排序方式调整 arraylist。 hashmap 的 id 和模型类的 id 在这里充当“外键”。任何人都知道如何做到这一点?

这是 HashMap :

HashMap<Integer, String> listDistance = new HashMap<Integer, String>();
listDistance.put(1, 3.22);
listDistance.put(2, 2.57);
listDistance.put(3, 6.32);
listDistance.put(4, 8.82);
listDistance.put(5, 1.32);

这是数组列表:

ArrayList<Listing> listings = new ArrayList<Listing>();
listing.add(1, "asd", 123);
listing.add(2, "ghf", 3434);
listing.add(3, "ert", 876);
listing.add(4, "tyi", 1267);
listing.add(5, "ohg", 1345);

这是模型类:

public class Listing {

int id, count;
String name;

public Listing(int id, String name, int count) {
this.id = id;
this.count = count;
this.name = name;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public int getCount() {
return count;
}

public void setCount(int count) {
this.count = count;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

我想要的结果应该将列表排序成这样:

  1. listing.add(5, "ohg", 1345);
  2. listing.add(2, "ghf", 3434);
  3. listing.add(1, "asd", 123);
  4. listing.add(3, "ert", 876);
  5. listing.add(4, "tyi", 1267);

除了考虑逻辑流程之外,我实际上没有尝试任何方法来使它起作用,因为我完全不知道如何做到这一点。

最佳答案

您可以像这样对列表进行排序:

Collections.sort(listing, (a,b) -> Double.compare(listDistance.get(a.getId()),
listDistance.get(b.getId())));

查看运行代码 IDEONE .

关于java - 对与 HashMap 连接的模型的 ArrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46069077/

25 4 0