如何实现ArrayList的中值分割

时间:2017-11-09 18:47:28

标签: java arraylist

我正在尝试返回值高于列中值的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帖子。

3 个答案:

答案 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);