如果我的主列表无法平均分配,我试图将整数列表分成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;
}
如何实现此方法的其余部分?
答案 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