0

アセットが POJO であり、set メソッドと get メソッドを持っている、タイプ asset のアラリストがあります。

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れたリストが含まれますAssetratingValue

于 2012-04-25T08:37:50.653 に答える
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 に答える
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 に答える