2014-10-07 1 views
0

누군가가 도와 줄 수 있습니까?containsAll()을 사용하여 두 ArrayList를 비교하는 중

두 개의 ArrayList가 있습니다.

array1가 포함

[3 아보카도 3 개 토마토, 소금 1 티스푼 1/2 컵 다이스 양파]

array2가 포함

[아보카도, 토마토]

array1.containsAll(array2)을 사용하려하지만 Avocados 및 Tomatoes 앞에 "3"이 있기 때문에 에 을 반환합니다.

감사합니다.

+0

좋아요. 무엇을하고 싶습니까? 왜 그것이 '지도'가 아닌가? –

+0

힌트 : 중첩 된 for-loops와 pass/fail/bail 플래그를 몇 개 사용하면 작업이 완료됩니다. –

+0

이것은 구아바'멀티 세트'를위한 것입니다. 두 번째 생각은 있지만 1/2 컵은 아닙니다. – biziclop

답변

1

대신 HashMap을 사용하는 것이 좋습니다. HashMaps에는 배열 목록과 같은 하나의 값 대신 키와 값 집합이 들어 있습니다. 이 경우 재료의 이름을 키로, 금액을 값으로 사용해야합니다. 그러나 HashMap에는 containsAll 메서드가 없지만 일련의 키 (재료)를 가져 와서 Set.containsAll을 호출 할 수 있습니다.

HashMap<String, Integer> array1 = new HashMap<String, Integer>(); 
ArrayList<String> array2 = new ArrayList<String>(); 
array1.put("Avocados", 3); 
array1.put("Tomatoes", 3); 
//etc. 
array1.keySet().containsAll(array2); 
+0

'array1.keySet(). containsAll (array2)'를 할 수 있지만,'array1'의 이름을'recipe' 또는 다른 이름으로 변경해야합니다. – rolfl

+0

@rolfl 매우 사실입니다. 나는'Set'에'containsAll'이 있다는 것을 잊었습니다. 그리고 변수 이름을 똑같이 남겨 두었 습니다만, 맵 배열을 명명하는 것이 이상하게 느껴졌습니다 .1. – Xergiok

+0

두 번째 생각에서 모든 금액이 숫자가되기를 원하지 않는다면 (HashMap ) 더 좋을 것입니다 (1/2 컵). 그래도 같은 개념. – Xergiok

0

containsAll()은 equals() 메소드를 사용하여 객체 동등성을 검사합니다. 당신이 문자열 번호를 사용해야와 같은 문자열을 비교하려면

또는 등호를 당신이 설명과 함께 자신의 클래스를 만들 수 및 수량 특성 및 덮어 쓰기() 메소드 방법과 몇 가지 루프를 포함

그것은 당신이하고 싶은 것에 달려 있습니다.

관련 문제