java分组问题
我有一个asset类型的arralist,其中asset是一个POJO,并且有它的set和get方法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
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的回答中,我如何从地图上访问列表?