2012-07-10 6 views
0

이것이 stackoverflow에 대한 올바른 질문인지 확실치 않지만 어쨌든 시도해 볼 것입니다.항목의 속성 목록을 만드는 방법은 무엇입니까? LinkedList, ArrayList, 파일?

여러 시스템이 서로 다른 시스템에서 작동하도록 시스템에 들어가는 생산 시스템을 시뮬레이션하려고합니다. 내가 만들 수 있도록

Machine [num][type][avg_time][posx][posy][state] 
Part [num][type][order][state] 

: 나는 일의 단일체를 유지하지만, 함께 이동하기 위해 노력하고있어, 정말 같은 "객체"에 인덱스 속성 및 값에 나를 수 있습니다 목록의 일종을 작성해야 예를 들어 나에게 주어진 시간에 속성을 검색 할 수 있도록 할 목록의 어떤 종류 :

Machine [1][a][19][100][100][busy] 

and Machine[posx] would retrieve the saved value for it 

나는 여전히 ArrayLists, LinkedList들을 및에 더 읽고 있어요하지만 가장 좋은 방법을 알아낼 수 없습니다 이것을하기 위해. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까, 그래서 주제에 대해 더 읽을 수 있습니까?

+3

당신은 이미 설명 된 속성을 가진'Machine'와'Part' 클래스를 만들 수 있습니다. –

답변

1

EnumsHashMap은이하자 수 : ....

public enum Properties { 
POSX, POSY, ... 
} 

Map<Properties, Value> machine = new HashMap<Properties, Value>(); 

값을 설정하는 방법을

machine.put(Properties.POSX, 151); //if Value is of Integer class, perhaps 

그리고 값을 검색 할 수 ...

machine.get(Properties.POSX) 
+0

대단히 감사합니다. 자세한 내용을 자세히 살펴 보겠습니다! 그러나 Enum 상수는 암시 적으로 정적이며 최종이며 일단 작성되면 변경할 수 없다는 것을 알게되었습니다! 이 기계와 파트 (이 경우) 모두에 대한 매개 변수가 모든 실행마다 다를 UI가있을 것이고, 문제가되지 않겠는가, 아니면 내가 잘못 해석하고 있습니까? –

1

위의 언급 된 문제 점은 컬렉션에 대해 지도.

귀하의 문제에 더 적합한 아래에서 하나를 선택하십시오.

의 등록 정보를 정렬하려면 TreeMap을 사용하십시오. 당신은지도 중 빠른을 원하는 경우에

2, 다음 HashMap에 대한 이동합니다. 당신은지도스레드 안전하려면

3., 다음 해시에 대한 이동합니다.

4.스레드 안전을 위해 당신은 또한 java.util.concurrent의 패키지에서 ConcurrentHashMap의를 사용할 수 있습니다.

예를 들면 :

HashMap<Properties, Value> myMachine = new HashMap<Properties, Value>(); 
+0

대단히 고마워요. 제가 가장 잘 어울리는 것을 찾아내는 사람들에 대해 자세히 살펴 보겠습니다! –

+0

Treemap과 Hash가 모두 유용한 것을 발견했습니다! 당분간, 나는 Treemaps를 사용할 것이고, 나는 그것이 나의 필요에 어울린다고 믿는다! 작은 질문 하나, 클래스를 사용하여 모든 값을지도에 할당 한 다음 다른 클래스에서 사용할 수 있습니까? –

+0

예 .... 소프트웨어 공학의이 원칙을 기억하십시오. ""수업은 한 가지만해야하므로 변경해야 할 한 가지 이유가 있습니다. " –

관련 문제