반응형
List<E> subList(int fromIndex, int toIndex)란?
어떤 리스트의 구성 요소 중 fromindex에서 toindex까지의 요소를 새로운 배열로 반환해 준다.
List<Integer> nums = new ArrayList<Integer>();
for(int i=0; i<10; i++) {
nums.add(i);
}
List<Integer> sub = nums.subList(2, 5);
System.out.printf("nums: %s, sub: %s%n",nums, sub);
위 코드의 결과는 다음과 같다.
nums: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], sub: [2, 3, 4]
▶ 주의해야 할 점 1
반환된 리스트는 요소들만 따로 분리해서 만든 게 아니라 여전히 연결되어 있기 때문에 상호 간에 영향을 준다.
List<Integer> nums = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
nums.add(i);
}
List<Integer> sub = nums.subList(2, 5);
System.out.printf("nums: %s, sub: %s%n", nums, sub);
sub.add(100); // sublist에 100 추가
sub.remove(0); // sublist의 0번 요소 즉 2 삭제
System.out.printf("nums: %s, sub: %s%n", nums, sub);
즉 위와 같은 코드에서 sublist에 값을 추가하고 삭제했는데 실행 결과를 보면 원본인 List의 구성 요소 역시 변경된 것을 알 수 있다.
nums: [0, 1, 3, 4, 100, 5, 6, 7, 8, 9], sub: [3, 4, 100]
▶ 주의해야 할 점 2
subList를 사용하다가 원본 리스트를 변경하게 되면 subList는 기존의 sublist는 더 이상 사용할 수 없게 된다.
nums.add(99);
System.out.printf("nums: %s%n", nums); // nums: [0, 1, 3, 4, 100, 5, 6, 7, 8, 9, 99]
System.out.printf("sub: %s%n", sub); // java.util.ConcurrentModificationException 발생
반응형
'Java' 카테고리의 다른 글
[Java] Map 전체 출력(entrySet, keySet, Iterator) (0) | 2022.07.15 |
---|---|
[Spring] Jackson ObjectMapper (0) | 2022.07.15 |
[Java] File Class - 특정 디렉토리 파일 목록 가져오기 (list/listFiles) (0) | 2022.07.15 |
[Java] File Class를 이용한 파일 생성 (0) | 2022.07.15 |
[Spring] StringUtils 클래스로 String 다루기 (0) | 2022.07.14 |