/* * Copyright (C) 2015 たんらる */ package fourthline.mmlTools.core; import java.util.ArrayList; import java.util.List; public final class Combination<T> { private List<List<T>> combinations; /** * 配列データから組み合わせを作成します. * @param array データ * @param r 組み合わせる個数 */ public Combination(T array[], int r) { combinations = comb(array, 0, r); } public List<List<T>> getArray() { return combinations; } private List<List<T>> comb(T array[], int n, int r) { if (r > 1) { List<List<T>> resultList = new ArrayList<>(); for (int i = n; i < array.length-1; i++) { List<List<T>> rightList = comb(array, i+1, r-1); for (List<T> rightItem : rightList) { List<T> item = new ArrayList<>(); item.add(array[i]); item.addAll(rightItem); resultList.add(item); } } return resultList; } else { List<List<T>> resultList = new ArrayList<>(); for(int i = n; i < array.length; i++){ List<T> item = new ArrayList<>(); item.add(array[i]); resultList.add(item); } return resultList; } } public static void main(String args[]) { String data[] = { "1", "2", "3", "4", "5", "6" }; new Combination<>(data, 3).getArray().forEach(t -> { System.out.println(t); }); } }