2016-02-16 1 views
0

Хорошо, возможно, это очень простое решение, но я не могу его найти. У меня есть два ArrayLists:Filling 2d array

ArrayList<Candidate>partyList and ArrayList<Party>electoralList 

Теперь я хочу сделать 2d целочисленный массив, представляющий партии и кандидатов, как это:

p c 
1 1 
1 2 
1 3 
2 1 
2 2 
3 1 
3 2 
3 3 
etc. 

Я думаю, что у меня уже есть право-петли на заполните массив, но я только пропустил правильную формулу, чтобы сделать это.

int[][]ArrList; 
for (int i=0; i<parties.size(); i++){ 
     for(int j=0; j<parties.get(i).getPartyList().size(); j++){ 
      ArrList[i][j]= 

Действительно ли это для петли? И какова формула для заполнения массива?

+2

Я не уверен в вашей структуре данных. Что такое «Кандидат» и что такое «партия»? Как эти два списка связаны каким-либо образом? Как вы назначаете «Кандидат» на «вечеринку»? – Veluria

+0

Каким должен быть размер 2-го измерения? У некоторых партий есть 3 кандидата и около 2. Что должно быть в оставшейся ячейке? – user1803551

ответ

0

Я попытаюсь ответить на вопрос, от того, как я понял, что вы ищете здесь.

  • Вы должны понять это первый:
  • 2D-массив состоит из массива укрытого т.е. ArrList [2] [3] = [[1,2,3], [1,2, 3]] -> Первая цифра объявляет Как много массивов в качестве элементов, вторая цифра объявляет размера или, если вам нравится: длина, из элементов массива

  • Если вы ищете, чтобы представить тыс кандидатов и партий в качестве номеров. Вот мое решение:

    int[][]ArrList = new int[parties.size()][electoral.size()] 
    for (int depth=0; depth < parties.size(); depth++){ 
        for(int itemIndex=0; itemIndex<parties.get(depth).getPartyList().size(); itemIndex++){ 
         ArrList[depth][itemIndex]= itemIndex; 
    

Я надеюсь, что это то, что вы искали.

+0

спасибо, это именно то, что я искал! –

0

Прежде всего, ArrList не должно иметь стартовой заглавной буквы (это не класс, а объект).

Второй вопрос (я думаю, что вас беспокоит) заключается в том, что вы не инициализируете матрицу, а стороны .size() всегда равны 0. Я не уверен, потому что кода недостаточно. Вы могли бы сделать что-то вроде этого

int ROWS = 10; 
    int COLS = 2; 
    int [][] matrix = new int[ROWS][]; 
    for(int i=0; i< matrix.length; i++){ 
     matrix[i] = new int[COLS]; 
    } 

или со списками

int ROWS = 10; 
    int COLS = 2; 
    List<List<Object>> matrix = new ArrayList<>(ROWS); 
    for (int i = 0; i < ROWS; i++) { 
     ArrayList<Object> row = new ArrayList<>(COLS); 
     for (int j = 0; j < COLS; j++) { 
      row.add(new Object()); 
     } 
     matrix.add(row); 
    } 
0
int[][] arrList=new int[parties.size()][2]; 
    int i=0,j=0,k=0; 
    for(;i<parties.size();i++,j++){ 
     if(j==1){ 
      arrList[k][j]=electoralList .get(--i); 
      j=-1; 
      k++; 
     } 
     else{ 
      arrList[k][j]=parties.get(i); 
     } 
    } 
    arrList[k][j]=aarM.get(electoralList .size()-1); 
System.out.println(Arrays.deepToString(arrList));