对与hashmap连接的模型的ArrayList进行排序

时间:2017-09-06 07:17:47

标签: java android sorting arraylist hashmap

我有一个模型的arraylist和一个hashmap。模型类包含诸如id(int),name,address等变量.surkmap包含id(int)和distance(double)。我之前尝试过使用Collection对模型列表进行排序,但问题是,我必须按照距离值对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:

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);
  6. 除了思考逻辑流程之外,我实际上还没有尝试过任何工作,因为我对如何做到这一点完全不了解。

1 个答案:

答案 0 :(得分:2)

您可以按如下方式对列表进行排序:

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

请参阅IDEONE上运行代码。