多维数组列表java

hk8txs48  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(284)

我想做一个多维的 ArrayList ,所以我想出了一个方法:

int NumberInColumns = (int) Math.floor(listAnswers.size() / NUMBER_OF_COLUMNS);
// make higher number of answers on the right
if (listAnswers.size() % NUMBER_OF_COLUMNS > 0)
        NumberInColumns++;
ArrayList<HolderAnswer> listAnswers = getAnswers();
ArrayList<ArrayList<HolderAnswer>> listAnswersSorted = new ArrayList<ArrayList<HolderAnswer>>();

int k=0;
for (HolderAnswer answer : listAnswers) {
    ArrayList<HolderAnswer> temp = new ArrayList<HolderAnswer>();
    temp.add(answer);   
    if (k % NumberInColumns == 0 ) { 
            listAnswersSorted.add(temp);            
        }
        else { 
            if (k == listAnswers.size()) { 
                listAnswersSorted.add(temp);
            }
        }
        k++;
}

我的问题是 ArrayList.size() 在7中,当我试图从数组中获取信息时,我只得到第一个和第五个记录。我错过了什么?

nnvyjq4y

nnvyjq4y1#

因此,示例化多维(i pick 3d)arraylist可以如下所示:

List< List <List <Some Type Here>>> my3DList= 
new ArrayList< ArrayList < ArrayList <Some Type Here >() >() >();

首先让我们看看如何从中获取数据。。。

ArrayList secondDemension = my3DList.get(0);
ArrayList thirdDemension = secondDemension.get(0);
SomeTypeHere value = thirdDemsion = 3D.List.get(0);

现在让我们看看如何迭代所有数据:

for(List<List<SomeType>> secondDemension in my3DList){
    for(List<sometype> thirdDemsion in secondDemension){
        for(YourType value in thridDemsion){
           System.out.println(value);
        }
    }

}
0pizxfdo

0pizxfdo2#

尝试对要在表行中显示的数组进行排序

ArrayList<HolderAnswer> listAnswers = getAnswers();
ArrayList<ArrayList<HolderAnswer>> listAnswersSorted =
new ArrayList<ArrayList<HolderAnswer>>();

// initialize the ArrayLists in listAnswersSorted
int numRows = listAnswers.size() / numColumns + 1;
for (int i = 0; i < numRows; i += 1) {
  listAnswersSorted.add(new ArrayList<HolderAnswer>());
}

// calculate column index where the "step" happens
int step = listAnswers.size() % numColumns;

// loop through and add elements to listAnswersSorted
int index = 0;
int row = 0;
int col = 0;
while (index < listAnswers.size()) {
  listAnswersSorted.get(row).add(listAnswers.get(index));

  int rows = col < step ? numRows : numRows - 1;
  row += 1;
  if (row == rows) {
    row = 0;
    col += 1;
  }
  index += 1;
}

// flatten the ArrayList<ArrayList> into a single ArrayList
ArrayList<HolderAnswer> newList = new ArrayList<HolderAnswer>();
for (ArrayList<HolderAnswer> list : listAnswersSorted) {
   newList.addAll(list);
 }

相关问题