2016-11-24 4 views
1

arraylist의 arraylist를 만들려고합니다.arraylist의 Java arraylist - 클래스 객체로 다차원 arraylist 만들기

import java.util.ArrayList; 
import java.util.List; 

class Neighbors{ 
ArrayList<Integer> inner = new ArrayList(); 
Neighbors(){} 
} 

ArrayList<Neighbors> outer = new ArrayList<Neighbors>(); 

void setup() { 
size(1280, 700, JAVA2D); 
background(0); 

Neighbors test1 = new Neighbors(); 
Neighbors test2 = new Neighbors(); 

test1.inner.add(0); 
test1.inner.add(1); 
test1.inner.add(2); 

test2.inner.add(5); 
test2.inner.add(6); 
test2.inner.add(7); 

println(test1.inner); 
println(test2.inner); 
// outer.add((ArrayList)test.inner); 
outer.add(test1.inner); 
outer.add(test2.inner); 
println(outer); 

} 

위의 코드는 위의 코드이지만 외부 배열에 inner arraylist를 추가 할 수 없습니다. 내가하는 일이 옳은지 확신 할 수 없다. 또는 올바른 방법으로이 작업을 수행 할 수있는 다른 방법이 있으면 도움을주십시오.

첫째, 나는 클래스의 대상으로 arraylist를 만들려고 노력하고 있는데, 나는 outerarraylist에서 이러한 내부 arraylist를 사용하고 싶습니다. 기본적으로 나는 클래스의 도움으로 2d arraylist가 필요합니다. arraylist 내에서 arraylist를 사용할 수있는 샘플 코드를 조언하거나 도움을 주시고 항목을 추가하고 액세스 할 수있는 방법을 알려주십시오.

+1

어떻게 이러한 arraylists를 함께 사용 하시겠습니까? 그들은 서로 다른 타입을 가지고 있습니다 ('Integer'와'Neighbor'). 그래서 그것들을 혼합 할 수 없습니다. 또한 클래스 외부에서 일부 클래스의 멤버 변수에 액세스하는 경우에는 잘못된 캡슐화로 간주됩니다. 너 정말로 무엇을하려고하는거야? – Robert

+1

2 차원 ArrayList를 원한다면, ArrayList >'을 사용해 보셨습니까? 무엇을 성취하려고합니까? – Logan

+0

이 arraylists를 동적 메모리가있는 2 차원 격자 또는 행렬로 사용하고 싶습니다. 각 정수를 예 용 개최 : 0 (로우) - 5, 6, 8, 10 1 (행) - (21), 4, 5 2 (행) - 1, 4, 5, 5, 11,12,16, ....... – zack

답변

2

대신 :

outer.add(test1.inner); 
outer.add(test2.inner); 

당신이 대신 다음 사용 하시겠습니까?

outer.add(test1); 
outer.add(test2); 

편집 : outer을 인쇄하려면 다음을 시도하십시오.

첫째, Neighbors 클래스에 toString() 방법을 추가

class Neighbors { 
    ArrayList<Integer> inner = new ArrayList(); 

    @Override 
    public String toString() { 
     return inner.toString(); 
    } 
} 

를 그리고, 당신은 단순히 사용 outer를 인쇄 할 수 있습니다

또는
System.out.println(outer); 

, 당신이 클래스를 사용하지 않으려면, 당신은 단순히 ArrayList의 ArrayList를 사용할 수 있습니다 :

ArrayList<ArrayList<Integer>> outer = new ArrayList<>(); 
outer.add(new ArrayList<>()); 
outer.get(0).add(0); 
outer.get(0).add(1); 
outer.get(0).add(2); 

ArrayList<Integer> inner = new ArrayList<>(); 
inner.add(3); 
inner.add(4); 
outer.add(inner); 

System.out.println(outer); 

이것은 [[0, 1, 2], [3, 4]]을 인쇄합니다.

+0

예, 맞습니다. 그게 효과적입니다. 정말 고맙습니다. 그러면 바깥 쪽 arraylist를 어떻게 인쇄합니까? println (외부); - 그 대신에 arraylist에게 위치를 알려줍니다. – zack

+0

편집을 확인하고 도움이되는지 알려주십시오.그렇다면 정확한 답으로 표시하십시오. :) –

+0

우리는 왜 tostring을 사용해야합니다. 다른 방법으로 액세스 할 수 있습니까? 설명해주십시오. 위의 질문에 대한 설명을 읽어보고 올바른 방법으로 구현하는지 여부를 알려주십시오. 클래스 객체를 사용하여 arraylist의 arraylist를 구현해야합니다. – zack