У меня есть следующий ArrayList,
[Title,Data1,Data2,Data3] [A,2,3,4] [B,3,5,7]
И я хотел бы преобразовать этот как
[Title,A,B] [Data1,2,3] [Data2,3,5] [Data3,4,7]
Я немного запутался с подходом. Любая подсказка будет высоко ценится.
Спасибо.
Так как get(index) может сильно повредить вашей производительности, т. Е. Для большого связанного списка, я бы рекомендовал использовать решение @polygenelubricants, но с итерационным подходом.
get(index)
public static <T> List<List<T>> transpose(List<List<T>> table) { List<List<T>> ret = new ArrayList<List<T>>(); final int N = table.stream().mapToInt(l -> l.size()).max().orElse(-1); Iterator[] iters = new Iterator[table.size()]; int i=0; for (List<T> col : table) { iters[i++] = col.iterator(); } for (i = 0; i < N; i++) { List<T> col = new ArrayList<T>(iters.length); for (Iterator it : iters) { col.add(it.hasNext() ? (T) it.next() : null); } ret.add(col); } return ret; }