gpt4 book ai didi

java - 根据键值对HashMap的ArrayList进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 01:22:32 24 4
gpt4 key购买 nike

我有一个 HashMap 列表。每个 HashMap 由几个 kay-value 对组成,所有内容都以字符串形式出现。我将所有 HashMap 存储在一个数组列表中。现在我需要根据 hashmap 中的键对 arraylist 进行排序。

这是我的示例数据:

{
"productID":"5643",
"productName":"Apple - iPod touch",
"outsidePrice":"189.99",
"merchantID":"134439",
"ourPrice":"184.99",
"storeName":"Ebay",
}


{
"productID":"3243",
"productName":"Apple - iPad",
"outsidePrice":"389.99",
"merchantID":"54439",
"ourPrice":"384.99",
"storeName":"Apple",
}

我将这些数据存储在这个结构中。

ArrayList<HashMap<String, String>> data_list = new ArrayList<HashMap<String, String>>();

我有一大堆这样的项目。现在我需要根据 hashmap 中的 productName、Price、storeName、productID 字段对数组列表进行排序。

最佳答案

我建议您使用自定义产品类来为您执行此操作。恕我直言,它最终将使您的代码更易于维护和更健壮。

这个怎么样?

代表您的数据的类:

class Product{

public string productId;
public string productName;
public BigDecimal outsidePrice;
public int merchantId;
public BigDecimal ourPrice;
public string storeName;

// whatever constuctors you need

}

您的产品列表:

  List<Product> products;

现在定义一个Comparator排序,一个用于您需要排序的每个字段。以下是 productId 的示例。

public class ProductProductIdComparator implements Comparator<Product>{

@Override
public int compare(Product product1, Product product2) {

if (product1.productId > product2.productId){
return +1;
}else if (product1.productId < product2.productId){
return -1;
}else{
return 0;
}
}
}

最后,一个 Collections sort它接受一个比较器作为参数:

Collections.sort(products, new ProductProductIdComparator());

关于java - 根据键值对HashMap的ArrayList进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13549065/

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