在Java中将整数列表拆分为2个长度大约相同的列表

时间:2018-11-10 13:51:27

标签: java class arraylist

如果我的主列表无法平均分配,我试图将整数列表分成2个长度相等的列表

到目前为止,我的代码涵盖了“均分”:

@Override
public Set<Bin> pack(int capacity, List<Integer> values) {
    /**
     * Divide the list into 2 equal parts if it can be Divided evenly
     * Else, divide the List into 2 parts of roughly the same length
     */
    int temp =values.size();
    if(temp % 2 == 0)
    {
        ArrayList<Integer> list1 = new ArrayList<Integer>();
        ArrayList<Integer> list2 = new ArrayList<Integer>();

        for(int i = 0; i < temp / 2;i++)
        {
            list1.add(i);
        }
        for(int i = temp / 2; i < values.size();i++)
        {
            list1.add(i);
        }
    }else //divide the list into 2 approximately equal parts
    {


    }
    return null;
}

如何实现此方法的其余部分?

2 个答案:

答案 0 :(得分:1)

您可以这样做

List<Integer> firstHalf = values.subList(0, values.size()/2);
List<Integer> secondHalf = values.subList(values.size()/2, values.size());

答案 1 :(得分:0)

如果您只需要查看初始List的两个部分,则可以使用List.subList(),但是请记住,您对初始列表进行了任何更改,它们将在{{ 1}}和list1,因为它们只是视图:

list2

要制作具有相同元素的新闻int middle = values.size() / 2; List<Integer> list1 = values.subList(0, middle); List<Integer> list2 = values.subList(middle, values.size()); ,您需要:

List