Java 基于对象的ArrayList对值进行排序
我坚持比较价值观。数组列表由两个对象组成:名称和百分比Java 基于对象的ArrayList对值进行排序,java,list,sorting,arraylist,Java,List,Sorting,Arraylist,我坚持比较价值观。数组列表由两个对象组成:名称和百分比 public class DataModel { private String name; private String dataUsagePercent; int color; } 数组列表是 List<DataModel> usageList; Collections.sort(usageList, new Comparator<DataModel>(){ p
public class DataModel {
private String name;
private String dataUsagePercent;
int color;
}
数组列表是
List<DataModel> usageList;
Collections.sort(usageList, new Comparator<DataModel>(){
public int compare(DataModel d1, DataModel d2){
return (d1.getDataUsagePercent()) - Integer.parseInt(d2.getDataUsagePercent()));
}
});
最终列表大小应始终仅为5,并且名称值没有影响
编辑:错过60。添加到组合值我认为您的列表数据类型需要更改为
列表使用列表代码>
要比较dataUsagePercent值,可以使用Collections.sort(usageList)代码>
或者您可以使用我认为您的列表数据类型需要更改为list usageList代码>
要比较dataUsagePercent值,可以使用Collections.sort(usageList)代码>
或者您可以使用首先,按dataUsagePercent
对列表进行排序:
usageList.sort(
Comparator.comparing(
DataModel::getDataUsagePercent,
Comparator.comparingInt(Integer::parseInt)));
在这里,我使用的是数据和方法
然后,我将使用一个公共for循环进行分组,并考虑索引:
int[] topFive = new int[5];
int size = usageList.size();
for (int i = 0; i < size; i++) {
int value = Integer.parseInt(usageList.get(i).getDataUsagePercent());
if (i == 0) {
topFive[0] = value; // lowest value at the beginning
} else if (i > 0 && i < size - 3) {
topFive[1] += value; // accumulate intermediate values in 2nd position
} else {
topFive[i - size + 5] = value; // top values in the last 3 positions
}
}
int[]topFive=新的int[5];
int size=usageList.size();
对于(int i=0;i0&&i
输出是[2,245,65,90,100]
首先,按数据使用百分比对列表排序:
usageList.sort(
Comparator.comparing(
DataModel::getDataUsagePercent,
Comparator.comparingInt(Integer::parseInt)));
在这里,我使用的是数据和方法
然后,我将使用一个公共for循环进行分组,并考虑索引:
int[] topFive = new int[5];
int size = usageList.size();
for (int i = 0; i < size; i++) {
int value = Integer.parseInt(usageList.get(i).getDataUsagePercent());
if (i == 0) {
topFive[0] = value; // lowest value at the beginning
} else if (i > 0 && i < size - 3) {
topFive[1] += value; // accumulate intermediate values in 2nd position
} else {
topFive[i - size + 5] = value; // top values in the last 3 positions
}
}
int[]topFive=新的int[5];
int size=usageList.size();
对于(int i=0;i0&&i
输出是[2,245,65,90,100]
首先我要对列表进行排序:
Collections.sort(usageList, new Comparator<DataModel>(){
public int compare(DataModel d1, DataModel d2){
return Integer.compare(d1.getDataUsagePercent(), d2.getDataUsagePercent());
}
});
Collections.sort(usageList,newcomparator(){
公共整数比较(数据模型d1、数据模型d2){
返回整数.compare(d1.getDataUsagePercent(),d2.getDataUsagePercent());
}
});
- 在那之后,你可以只取第一个元素和最后3个元素
- 将中间值相加
- 并创建结果数组
首先,我要对列表进行排序:
Collections.sort(usageList, new Comparator<DataModel>(){
public int compare(DataModel d1, DataModel d2){
return Integer.compare(d1.getDataUsagePercent(), d2.getDataUsagePercent());
}
});
Collections.sort(usageList,newcomparator(){
公共整数比较(数据模型d1、数据模型d2){
返回整数.compare(d1.getDataUsagePercent(),d2.getDataUsagePercent());
}
});
- 在那之后,你可以只取第一个元素和最后3个元素
- 将中间值相加
- 并创建结果数组
您可以创建另一个ArrayList并将所有百分比的副本放入其中,然后使用Collections.sort(ArrayList)
。然后获取四个最高值和最低值,并将其余值相加。这是假设名称对百分比没有影响。您需要实现Compariable to use Collections.sort?值在哪里?它既不作为直接值出现在最终列表中,也不作为第五个值求和。如果没有,则立即添加。您可以创建另一个ArrayList并将所有百分比的副本放入其中,然后使用集合。排序(ArrayList)
。然后获取四个最高值和最低值,并将其余值相加。这是假设名称对百分比没有影响。您需要实现Compariable to use Collections.sort?值在哪里?它既不是作为直接值出现在最终列表中,也不是求和形成第五个值。错过了,现在添加