자바에서 값과 수량이 짝지어진 데이터들을 표현하려고 함.
-> 25000, 5 와 같은 식
1)이차원 배열, 리스트 사용
int[][] array = new int[2][n];
2) 새로운 클래스 정의해서 사용
class PriceData {
int price;
int quantity;
//생성자
….
}
PriceData[] array = new PriceData[n];
1)번 방식이 간단해서 좋아 보이긴 하는데 어떻게 생각해??
이건 걍 내생각임. 니가 단순히 알고리즘을 푸는건지 아니면 니가 프로그램을 작성하고 그 서브시스템으로 사용하려는 건지부터 알아야지. 단순 알고리즘을 풀기 위한거면 해시맵도 있고 튜플, 리스트 등을 쓰면 되겠지. 하지만 어떤 프로그램의 서브 시스템으로 이용을 하려고 한다면, 2번이 낫겠지
1번을 고려해보자. 값과 수량이라는 정보를 리스트로 구성하고, 그것을 리스트에 담는다면, 2차원 배열의 i,j 값은 니만 알겠지. 내부적으로 i번째 인덱스는 무엇을 의미하고, j번째 인덱스는 무엇을 의미하는지 그것의 사용 방법은 너만 알겠지. 즉, 데이터의 내부 정보는 니만 알고있고 이해하고 사용하기 쉬운 무언가가 되겠지.
2번을 보자. 2번을 이용해서 데이터를 관리하고 사용할 경우, Class.price, Class.quantiies 등 명시적으로 사용가능하며 데이터 객체의 그 의도를 잘 살릴 수 있겠지. 근데 한가지 문제점은 네이밍임. PriceData가 왜 PriceData임? PriceData 인데 왜 수량이 들어가 있지? 차라리 가격과 수량에 대한 정보를 잘 표현하는 이름이 좋겠지. 예를 들어, 객체가 가격과 수량뿐만 아니라 제조사 제품이름 등 다양한 정보가 들어있을 경우, price가 아닌 Product혹은 Item 등 포괄적으로 포함하는 데이터를 잘 표현할 수 있는 이름이 좋겟지
조금 감이 잡히는거 같네요 친절한 답변 감사합니둥
한번 더 나아가보자. 만일 확장할 이유가 생겼다고 해보자. 단순히 가격과 수량 거기다 제조사 이름이 추가되고, 시간이 지나면 생산일자가 추가될 수 있고, 또 시간이 지나 제품 버전까지도 추가될 수 있다고 해보자. 추가로 어떤 항목은 다수의 집합 혹은 리스트로 구성된다고 해보자. 이 경우 리스트를 사용하면 확장 해야할 이유가 발생할때마다 리스트의 내부 리스트에 추가하고, 리스트의 리스트의 리스트로 추가하고 그럴 건가? 아주 사용하기 어렵고 점점 더 복잡해지겠지. 인덱스 1번이 뭐였더라... 2번...3번...5번은 뭐였지 하고.
그리고, 데이터를 객체로 표현한다고 했을때, 그 집합을 array에 담는게 좋을지, ArrayList 컨테이너에 담는게 좋을지도 고민해보삼
map 쓰면 되는걸