Study/java

[Java] Collection - add, addAll: 값 추가, 리스트에 리스트 추가

 

Collection 클래스에는 add와 addAll 메소드가 있습니다.

add 메소드는 리스트와 같은 컬렉션 객체에 단일 값을 추가하는 메소드고, 

addAll 메소드는 컬렉션 객체에 컬렉션을 추가하는 메소드입니다.

 

add

컬렉션에 원소를 추가하는 메서드입니다.

 

두 메서드의 반환 타입은 boolean입니다.

List<Integer> list = new ArrayList<>();
boolean add1 = list.add(1);
boolean add2 = list.add(2);
System.out.println("add1 = " + add1);
System.out.println("add2 = " + add2);

add 결과

 

만약에 중복을 허용하지 않는 컬렉션(ex. set)에 중복값을 add 하게 되면 false를 리턴합니다.

Set<Integer> set = new HashSet<>();
boolean add1 = set.add(1);
boolean add1_2 = set.add(1);
System.out.println("add1 = " + add1);
System.out.println("add1_2 = " + add1_2);

컬렉션에 요소가 추가되지 않았을 때 false 반환

 

 

 

 

addAll

addAll은 컬렉션 단위로 추가할 수 있는 메서드입니다.

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);

Set<Integer> set = new HashSet<>();
set.add(3);
set.add(4);

boolean addAll = list.addAll(set);
System.out.println("addAll = " + addAll);
System.out.println("list = " + list);

addAll 사용 결과

List와 Set은 다른 자료구조지만, 자바에서는 Collection 인터페이스를 상속받은 클래스이기 때문에 addAll 메서드를 통해 서로 추가할 수 있습니다.

 

Set<Integer> set = new HashSet<>();
set.add(3);
set.add(4);

List<Integer> list2 = new ArrayList<>();
list2.add(3);
list2.add(4);
list2.add(5);   // 제거하고 addAll 하면 false 리턴

boolean addAll = set.addAll(list2);
System.out.println("addAll = " + addAll);
System.out.println("set = " + set);

중복이 제거된 컬렉션

중복을 허용하지 않는 컬렉션이라면 추가할 때 중복이 제거됩니다.

 

add와 addAll 메소드는 boolean 값을 반환합니다.

boolean 반환값에 대해 좀 더 정확하게 표현하자면, 컬렉션에 변화가 생기면 true, 변화가 없으면 false를 리턴합니다.

set에 중복 원소를 add 하게 되면 컬렉션에 추가되는 것이 없기 때문에 false를 리턴합니다.

 

예제 코드의 주석에 적어놓은 것처럼 중복을 허용하지 않는 컬렉션에 있는 원소와 동일한 원소가 있는 컬렉션을 추가하면 false를 리턴합니다.