java分组问题

java分组问题,java,grouping,Java,Grouping,我有一个asset类型的arralist,其中asset是一个POJO,并且有它的set和get方法 ArrayList<Asset> assetItems; 现在的任务是,资产应根据其评级值进行分组。谁能帮我一下吗 比如说 最初,如果arraylist中项目的ratingvalue为 A. C G A. J c 那么输出应该是 A. A. C C G j听起来像是一个来自你想要的: Multimap<String, Asset> map = Multimaps.new

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

ArrayList<Asset> assetItems;
现在的任务是,资产应根据其评级值进行分组。谁能帮我一下吗

比如说 最初,如果arraylist中项目的ratingvalue为 A. C G A. J c

那么输出应该是 A. A. C C G j

听起来像是一个来自你想要的:

Multimap<String, Asset> map = Multimaps.newListMultimap();
for (Asset asset : assetItems) {
    map.put(asset.getRatingValue(), asset);
}
听起来你想要的是来自:

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

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

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

   // add Asset to group list

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

    }
类资产组
{
int阈值;
ArrayList列表资产;
//将资产添加到组列表
公共无效添加(资产a)
{
this.listAssets=a;
}
}

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

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

   // add Asset to group list

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

    }
类资产组
{
int阈值;
ArrayList列表资产;
//将资产添加到组列表
公共无效添加(资产a)
{
this.listAssets=a;
}
}

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

Collections.sort(assetItems, new Comparator<Asset>() {
    public int compare(Asset a1, Asset a2) {
        return a1.getratingValue().compareTo(a2.getratingValue());
    }
};
Collections.sort(资产、新比较器(){
公共整数比较(资产a1、资产a2){
返回a1.getratingValue().compareTo(a2.getratingValue());
}
};

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

Collections.sort(assetItems, new Comparator<Asset>() {
    public int compare(Asset a1, Asset a2) {
        return a1.getratingValue().compareTo(a2.getratingValue());
    }
};
Collections.sort(资产、新比较器(){
公共整数比较(资产a1、资产a2){
返回a1.getratingValue().compareTo(a2.getratingValue());
}
};

您应该尝试以下方法:

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-groupedAssets=newhashmap()
对于(资产:资产){
int ratingValue=asset.getratingValue();
列表资产=groupedAssets.get(ratingValue);
如果(assets==null){//以前从未检索过此评级值
资产=新的ArrayList();
分组资产出售(评级价值、资产);
}
资产。添加(资产);
}

生成的
映射
包含按
评级值分组的
资产
列表

您应该尝试以下操作:

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-groupedAssets=newhashmap()
对于(资产:资产){
int ratingValue=asset.getratingValue();
列表资产=groupedAssets.get(ratingValue);
如果(assets==null){//以前从未检索过此评级值
资产=新的ArrayList();
分组资产出售(评级价值、资产);
}
资产。添加(资产);
}

生成的
地图
包含按
评级值

分组的
资产列表
你所说的分组是什么意思?比如将所有对象组织在某个阈值之下等等?或者类似的事情?你所说的分组是什么意思?比如将所有对象组织在某个阈值之下等等?或者类似的事情?我没有回答你所说的问题我添加了一个例子。但我保留我的答案,以防它可能会帮助任何人!我不是像您添加的例子那样回答。但我保留我的答案,以防它可能会帮助任何人!评级值是一个字符串。这是逻辑吗used@sonysamsung是的,没有问题,只需使用compareTo()相反,我编辑了我的文章来说明评级值是一个字符串。这是逻辑吗used@sonysamsung是的,没有问题,只需使用compareTo()。我编辑了我的帖子,以说明我不应该使用外部jar:(@sonysamsung:您认为问题中没有提到的任何其他要求?(请阅读)当然,您可以随时构建自己的
Multimap
实现,只要有
Map
支持即可。这是唯一的要求。我不应该使用外部jars@sonysamsung:如我所说,自己实现
Multimap
。(如果你在你的问题中提供了更多的信息,你就不必做太多的修改。)给你大概是家庭作业的完整代码不是一个好主意,因为你不会真正学到太多。:)我是java新手。在VakimSHaar的回答中,我如何从地图上访问列表?我不应该使用外部jar:(@sonysamsung:您认为问题中没有提到的任何其他要求?(请阅读)当然,您可以随时构建自己的
Multimap
实现,只要有
Map
支持即可。这是唯一的要求。我不应该使用外部jars@sonysamsung:如我所说,自己实现
Multimap
。(如果你在你的问题中提供了更多的信息,你就不必做太多的修改。)给你大概是家庭作业的完整代码不是一个好主意,因为你不会真正学到太多。:)我是java新手。。在VakimSHaar的回答中,我如何从地图上访问列表?