ArrayList 및 iterator방식과 stream방식

ArrayList vs Array

Array(배열)는 private type, object element를 담을수있는 길이가 고정되어 있다.

ArrayList는 List인터페이스에서 구현된 클래스로써 object element만 담을수있며 동적인 길이를 갖는다.

ArrayList는 다양하게 사용될수있는데 아래의 예제를 통해 확인해보자.

  • 첫번째
List<String> strlist = new ArrayList<>();
	
    	strlist.add("dsg");
	strlist.add("kmb");
	strlist.add("ibk");
	strlist.add("kmj");
		
	for(int i=0; i<strlist.size(); i++) {
		System.out.println("strlist : " + strlist.get(i));	
	}

String 타입의 제네릭을 갖는 ArrayList 객체를 생성하고 .add 메서드로 각 인덱스에 값을 넣어준다. 결과는 다음과 같다.

  • 두번째
List<String> strlist2 = Arrays.asList("dsg", "kmb", "ibk", "kmj");
		
	for(String str : strlist2) {
			
		System.out.println("str : " + str);	
	}

Array 클래스의 메서드인 asList로 직접 값을 넣는다.
foreach문(향상된 for문)을 사용한것으로 for(변수타입 변수 : 배열명) 이다.
for(String str : strlist2) == String [ ] str = strlist2.get(i)

결과는 다음과 같다.

  • 세번째
List<String> strlist3 = Arrays.asList("dsg", "kmb", "ibk", "kmj");
		
	strlist3.stream()
		.forEach( i -> {
  		    System.out.println(i);
		});
        
      
List<UserDto> strlist4 = Arrays.asList(
				
	new UserDto("dsg", 31, "male"),
	new UserDto("kmb", 30, "male"),
	new UserDto("ibk", 29, "female"),
	new UserDto("kmj", 28, "male")
);
	
	strlist4.stream()
		.map(UserDto::getAge)
		.forEach( i -> {
			System.out.println(i);
		});
        
	System.out.println (	
		strlist4.stream()
			.map(UserDto::getAge)
			.collect(Collectors.toList())
		
		);

3) stream( ) 중간처리메서드를 사용한것으로써 데이터 변환을 위해 여러 메서드를 사용가능하다.

예전에는 아래의 예시처럼 iterator방식을 사용했지만 (방식이 복잡)
stream( ) 메서드를 활용하여 편리하게 데이터 파싱이 가능하다.

List<String> stringList = Arrays.asList("월","화","수","목","금");
		
Iterator<String> iterator = stringList.iterator();
		
	while(iterator.hasNext()) {	
			
		System.out.println("iterator.next() : " + iterator.next());	

		iterator.remove();

	}

iterator방식에서 사용된 메서드들의 의미는 다음과 같다.

.hasNext() --> 다음값이 있을때까지 계속 while문 돈다
.next() --> 다음 데이터를 반환
.remove() --> next()메서드가 호출한 데이터를 삭제

결과값 : 처음에 나온 "월" 제외하고 .next() 메서드에 의해 반환되는 "화","수","목","금" 은 제거됨

좋은 웹페이지 즐겨찾기