2010-05-24 148 views
0

可有人请给予相当于Java以下蟒(其中切片一个给定的数组为特定的部分),它最初是由ChristopheD写在这里:Java代码翻译

def split_list(alist, wanted_parts=1): 
    length = len(alist) 
    return [ alist[i*length // wanted_parts: (i+1)*length // wanted_parts] 
      for i in range(wanted_parts) ] 

我不不知道任何python,但可以在我的Java应用程序中真正使用上述代码。由于

+0

0123你在哪里卡住了? – 2010-05-24 09:01:04

回答

1

也许是这样的:

List<List<T>> splitList(List<T> alist, int wantedParts) { 
    ArrayList<List<T>> result = new ArrayList<List<T>>(); 
    int length = alist.length; 

    for (int i = 0; i < wantedParts; i++) { 
     result.append(alist.subList(i*length/wantedParts, 
            (i+1)*length/wantedParts)); 
    } 

    return result; 
} 

如果您alist将结构后以任何方式修改,你将不得不作出在代码中的subList方法创建的子表的副本,否则结果将是不可预测的。

+0

感谢您的代码Tamas。 虽然有一个问题。 sublist返回列表,但是当我尝试声明一个列表它告诉我“类型列表不是通用的;它不能用参数参数化”。它不会接受ArrayList 的结果?我能在那里做什么? – ke3pup 2010-05-24 08:54:04

+1

@techventure获得java编译器版本5或更高版本。 – 2010-05-24 08:59:33

+0

确定设法让它工作。 当列表数量不是偶数时,代码有问题。 例如9个数字的列表,它只能达到8。 – ke3pup 2010-05-24 09:07:29

0

不要重新发明轮子,谷歌收集api有一个叫做分区的功能,它的确如此