我正在尝试返回值高于列中值的ArrayList。例如,我有一个对象列表,如:
List<ObjectX> where
Object X has a value v such that v=25.
Object X has a value v such that v=15.
Object X has a value v such that v=5.
Object X has a value v such that v=35.
我的尝试:
public static ArrayList<ObjectX> medianSplit(ArrayList<ObjectX> data,boolean lowerHaf){
Collections.sort(data);
return data.subset(0,data.size()/2);
}
这不是一个学校项目,我能够使用任何代码,我的尝试是基于另一个SO帖子。
答案 0 :(得分:0)
这似乎可以使用subList
public static void main(String args[]) throws IOException {
List<Integer> list = new ArrayList<Integer>();
list.add(2);
list.add(232);
list.add(4);
list.add(89);
list.add(77);
list.add(12);
list.add(19);
List<Integer> lowerHalf = medianSplit(list);
System.out.println("list: " + lowerHalf);
}
public static List<Integer> medianSplit(List<Integer> data) {
Collections.sort(data);
return data.subList(0, data.size() / 2);
}
输出:
list: [2, 4, 12]
BUILD SUCCESSFUL (total time: 0 seconds)
答案 1 :(得分:0)
使用subList(0,N)创建子列表,N是独占的。
这不会将项目复制到新列表,但会返回现有列表上的列表视图。
这应该解决它:
data.subList(0, data.size() / 2);
答案 2 :(得分:0)
这是java 8的排序
data.sort(Comparator.comparing(a -> a.v));
然后你可以返回
Arrays.copyOfRange(data, 0, data.size()/2);