2010-05-24 117 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有一個叫做分區的功能,它的確如此