0

我有一个资产类型的 arralist,其中资产是一个 POJO,并且有它的 set 和 get 方法。

ArrayList<Asset> assetItems;

每个资产都有一个 ratingValue,可以通过以下方式获取

assetItems.get(i).getratingValue();

现在的任务是assetItems 应该根据它们的评级值进行分组。有人可以帮我吗

例如,最初如果 arraylist 中的项目的 ratingvalue 是 a c g a j c

那么输出应该是 a a c c g j

4

4 回答 4

3

听起来像Multimap来自番石榴的是你想要的:

Multimap<String, Asset> map = Multimaps.newListMultimap();
for (Asset asset : assetItems) {
    map.put(asset.getRatingValue(), asset);
}

然后您可以获得具有特定评级的所有资产:

for (Asset asset : map.get(someRating)) {
    ...
}
于 2012-04-25T08:35:25.843 回答
1

您应该尝试以下方法:

Map<Integer, List<Asset>> groupedAssets = new HashMap<Integer,  List<Asset>>()
for(Asset asset : assetItems) {
    int ratingValue = asset.getratingValue();
    List<Asset> assets = groupedAssets.get(ratingValue);
    if(assets == null) { // this rating value has never been retrieved before
        assets = new ArrayList<Asset>();
        groupedAssets.put(ratingValue, assets);
    }
    assets.add(asset);
}

结果Map包含Asset分组的列表ratingValue

于 2012-04-25T08:37:50.653 回答
0

您可以像这样根据阈值对资产进行分组。

    Class AssetGroup
    {
    int thresholdrating;
    ArrayList<Asset> listAssets;

   // add Asset to group list

   public void add(Asset a)
   {
    this.listAssets = a;
   }

    }
于 2012-04-25T08:36:52.353 回答
0

如果您的意思是分组,请查看 Jon Skeet 解决方案。如果您的意思是排序,那么您可以使用以下代码:

Collections.sort(assetItems, new Comparator<Asset>() {
    public int compare(Asset a1, Asset a2) {
        return a1.getratingValue().compareTo(a2.getratingValue());
    }
};
于 2012-04-25T08:37:46.270 回答