创建列表的子列表,该列表位于存储的对象列表

时间:2017-07-12 11:41:21

标签: java list arraylist sublist

所以我有一个名为Event的对象,它有变量。

private String id;
private int x;
private int y;
private int distance;
private ArrayList<Double> list;

列表变量包含一个双打列表,表示每个事件的票价列表。

我已经将列表从最低到最高排序,因此最低价格位于列表的顶部。我想要做的是创建一个1的子列表,这将是每个事件的最低价格。

我目前有一个事件列表,我可以为其创建一个5的子列表。

 List<Event>resList = new ArrayList<>(unique1.subList(unique1.size() - 5, unique1.size()));

当我尝试创建双打列表的子列表时,它不会这样做。它没有给我任何错误,但只是不创建列表并返回列表不变。 这就是我的尝试。

public List<Event> finalTickets(List<Event> list){


        for(int i =0; i < list.size();i++){
            ArrayList<Double> onePrice = new ArrayList<Double>(list.get(i).getList().
                    subList(list.get(i).getList().size()-1, list.get(i).getList().size()));
        }

        return list;
    }

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

您没有更改传递给方法的列表的Event个实例,并且您在方法内创建的ArrayList<Double>实例不会被任何对象引用。

要更改这些Event的列表,您应修改Event个实例:

for(int i = 0; i < list.size(); i++){
    ArrayList<Double> onePrice = new ArrayList<Double>(list.get(i).getList().
            subList(list.get(i).getList().size()-1, list.get(i).getList().size()));
    list.get(i).setList(onePrice);
}