Я хотел создать алгоритм в java, где я могу передать список строк, и он вернет новый список со всеми возможными комбинациями строк, которые он имеет в списке.
Пример:
String[] listWords = new String[] {
"windows",
"linux",
"mac",
"10",
"20"
};
Я хотел бы вызвать метод, передав список, который возвращает все возможные комбинации во всех порядках.
combinations(listWords);
Это результат, который я хотел получить:
windows, linux, ma c, 10,20, windowslinux, linuxwindows, windowsma c, windows10, 10 windows, windows20,20 windows, windowslinuxmac1020, windowsmaclinux20, mac10, mac20,20ma c, 20mac10, windowsma c, ma cwindows ...
Я пробовал это:
public String[][] combinations (String[] ports) {
List<String[]> combinationList = new ArrayList<String[]>();
for ( long i = 1; i < Math.pow(2, ports.length); i++ ) {
List<String> portList = new ArrayList<String>();
for ( int j = 0; j < ports.length; j++ ) {
if ( (i & (long) Math.pow(2, j)) > 0 ) {
portList.add(ports[j]);
}
}
combinationList.add(portList.toArray(new String[0]));
}
return combinationList.toArray(new String[0][0]);
}
Но это возвращает:
введите описание изображения здесь
Это было не так, как я хотел. Результат должен был быть:
список: [windows, linux, windowslinux, linuxwindows, windows10, 10windowsma clinux .. .]
Можно ли это сделать в java? спасибо кто может помочь :)