我有一个资产类型的集合体,其中资产是一个POJO,并且有set和get方法。
ArrayList<Asset> assetItems;
每个资产都有ratingValue和 它可以通过
获取assetItems.get(i).getratingValue();
现在任务是assetItems应根据其评级值进行分组。有人可以帮助我吗
例如 最初,如果arraylist中的项目的评级值是 一个 C G 一个 Ĵ ç
那么输出应该是 一个 一个 C C G Ĵ
答案 0 :(得分:3)
Multimap<String, Asset> map = Multimaps.newListMultimap();
for (Asset asset : assetItems) {
map.put(asset.getRatingValue(), asset);
}
然后您可以获得具有特定评级的所有资产:
for (Asset asset : map.get(someRating)) {
...
}
答案 1 :(得分: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
列表
答案 2 :(得分:0)
您可以根据阈值对此类资产进行分组。
Class AssetGroup
{
int thresholdrating;
ArrayList<Asset> listAssets;
// add Asset to group list
public void add(Asset a)
{
this.listAssets = a;
}
}
答案 3 :(得分:0)
如果您的意思是分组,那么请看看Jon Skeet解决方案。 如果您的意思是排序,那么您可以使用以下代码:
Collections.sort(assetItems, new Comparator<Asset>() {
public int compare(Asset a1, Asset a2) {
return a1.getratingValue().compareTo(a2.getratingValue());
}
};