자바의 적절한 데이터 구조로 매트릭스와 같은 데이터를 표현하고 싶습니다. 이 행렬의 크기는 사용자 입력에 따라 다릅니다. 한 가지 방법은 아마 "magic"max-constant를 사용하고 간단한 다차원 배열을 사용하는 것입니다. 그러나 데이터에 대한 연산은 차원에 크게 의존하며 고정 배열을 사용하지 않으려합니다. 왜냐하면 항상 사용 된 대 최대 차원을 추적해야하기 때문입니다. 더 동적 인 접근법은 무언가를 정의하는 것과 같습니다.Java에서 ArrayList를 "감싸는"가장 좋은 방법은 무엇입니까?
private ArrayList<ArrayList<ArrayList<Point>>> arr3d = new ArrayList<ArrayList<ArrayList<Element>>>();
나는 이것이 받아 들일 수 없을 정도로 추악하다고 생각합니다. 커스텀 데이터 구조, 즉 1 차원 ArrayList (또는 Vector)를 정의한 다음, 어떻게 든 그것을 감싸는 것, 즉 [i, j, k]로 지정된 액세스를 그 단일리스트의 어떤 요소에 매핑하는 것이 더 나을 수도있다. 연산자 []를 덮어 쓸 수 있습니까? 이 작업을 효율적으로 수행하는 방법은 무엇입니까? 기존 라이브러리 나 코드가 있습니까?
추신 : 일반적인 문제 일 수 있다고 생각했지만 최선의 노력에도 불구하고 기존 질문을 찾지 못했습니다. 미리 답변을 드리지 않으면 사과드립니다.
이 난 아직도 이해가 안 ...
Point
배열 생성을 자신의 목록을 만들 (당신이ArrayList
를 사용하는 경우에도 내부적으로) 및 포장AbstractList
을 구현하는 – m0skit0생각을 할 수 있습니다 때문에 정적으로 그들의 차원 수를 선언해야한다.'double [] []'vs'double [] [] []'), op는 런타임에 결정될 것이라고 말합니다. (아마도) – fortran