[英]Access directly a column inside an ArrayList in Java
我試圖訪問的不是2D ArrayList中的單個元素,而是整個列。 由於在需要一行時很容易做到這一點(因為2D數組是按行和列讀取的),所以對列執行相同操作對我來說並不容易。
您對此有何建議?
任何幫助將不勝感激!
非常感謝!
最好的方法是在List
中使用List
:
List<List<String>> listWithList = new ArrayList<List<String>>();
要從父 List
獲取子 List
,您需要為第一個子 List
調用例如0
:
List<String> anotherList = new ArrayList<String>();
anotherList = listWithList.get(0); // get the first complete List
要從子 List
獲取String
,您需要調用:
String someText = anotherList.get(0); // get the first String
或直接從List
中的List
:
String moreText = listWithList.get(0).get(0); // get the first String from the first List
無法直接訪問2D面向行的列表中的列。 但是,您可以始終提取所需的值。
要檢索索引n
處的列,您可以簡單地運行:
twoDList.stream().map(innerList -> innerList.get(n))
.collect(Collectors.toList());
這也可以輕松更改為普通的for-each循環。
List<T> column = new ArrayList<T>();
for(List<T> row: twoDList) {
column.add(row.get(n));
}
我最近在這里發布了類似的內容。
在這里,我創建了一個ColumnList
對象,該對象使我可以操縱2D數組的單個列。 在這種情況下,我正在對其進行排序。
class ColumnList<T> extends AbstractList<T> implements List<T> {
private final T[][] array;
private final int column;
public ColumnList(T[][] array, int column) {
this.array = array;
this.column = column;
}
@Override
public T get(int index) {
return array[index][column];
}
@Override
public T set(int index, T element) {
return array[index][column] = element;
}
@Override
public int size() {
return array.length;
}
}
public void test(String[] args) {
Integer[][] array = {
{6, 8, 9, 16},
{0, 6, -3, 4},
{18, 2, 1, 11}
};
System.out.println("Before: " + Arrays.deepToString(array));
// Sort each column separately.
for (int i = 0; i < array[0].length; i++) {
List<Integer> column = new ColumnList<>(array, i);
Collections.sort(column);
}
System.out.println("After: " + Arrays.deepToString(array));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.