20/11/18

아라·2020년 11월 19일
0

국비교육

목록 보기
27/30
// 자바 스트림

// 1. 입출력 스트림
// - 콘솔 입출력, 파일 입출력, 네트워크 입출력

// 2. 스트림
// - JDK 1.8부터 지원
// - 배열, 컬렉션 탐색을 지원

// 스트림(Stream)
// - 람다식 사용 -> 코드 간결

// 배열, 컬렉션 탐색
// 1. for문
// 2. 향상된 for문
// 3. iterator
// 4. 스트림

// 람다식
// - (매개변수) -> { 구현부; }
// - 인터페이스 = (매개변수) -> { 구현부; }

// 함수형 인터페이스(표준 API 함수형 인터페이스)
// 1. Consumer
// - (매개변수) -> { 구현부; }
// 2. Supplier
// - () -> { return 반환값; }
// 3. Function
// - (매개변수) -> { return 반환값; }
// 4. Operator
// - (매개변수) -> { return 반환값; }
// - 매개변수와 반환값의 타입 동일
// 5. Predicate
// - (매개변수) -> { return 반환값; }
// - 반환값의 타입이 boolean
	
private static void m3() throws IOException {
	// 스트림 객체 얻어오기
	// 1. 배열로부터
	// 2. 컬렉션으로부터
	// 3. 숫자 범위로부터
	// 4. 파일로부터
	// 5. 디렉토리로부터
	
	// 1. 배열
	int[] nums1= {10, 20, 30, 40, 50};
	Arrays.stream(nums1).forEach(n->System.out.println(n));
	System.out.println();
	
	// 2. 컬렉션
	Data.getStringList().stream().forEach(word->System.out.println(word));
	System.out.println();
		
	// 3. 숫자 범위
	// - 일련의 숫자 모음이 필요할 때 배열을 직접 만들지 않고 사용하기 위해서 제공
	IntStream.range(1, 11).forEach(n->System.out.println(n));
	System.out.println();
	
	try {
		// 4. 파일
		Path path=Paths.get(".data.txt");
		System.out.println(path.toAbsolutePath());
		Files.lines(path).forEach(line->System.out.println(line));
	}catch (Exception e) {
		// 예외
	}
		
	// 5. 디렉토리
	Path path2=Paths.get("."); // 현재 디렉토리
//	System.out.println(path2.toAbsolutePath);
	Files.list(path2).forEach(file->System.out.println(file));
	System.out.println();
}
	
private static void m2() {
	// 배열(컬렉션) 탐색
	List<Integer> nums=Data.getIntList(10);

	// 1. for문
	for(int i=0;i<nums.size();i++) {
		System.out.printf("%4d", nums.get(i));
	}

	System.out.println();

	// 2. 향상된 for문
	for (int i:nums) {
		System.out.printf("%4d", i);
	}
	System.out.println();

	// 3. iterator
	Iterator<Integer> iter=nums.iterator();
	
	while(iter.hasNext()) {
		System.out.printf("%4d", iter.next());
	}
	System.out.println();

	// 4. Stream
	Stream<Integer> stream=nums.stream();
	stream.forEach(new Consumer<Integer>(){
    		@Override
      		public void accept(Integer t) {
          		System.out.printf("%4d", t);
      		}
	});
		System.out.println();
		
	// 5. Stream+람다식
	nums.stream().forEach(t->System.out.printf("%4d", t));
	System.out.println();

	Data.getStringList(10).stream().forEach(word->System.out.println(word));
	System.out.println();

	Data.getUserList().stream().forEach(user->{
		System.out.println("[회원정보]");
		System.out.println("이름 : "+user.getName());
		System.out.println("나이 : "+user.getAge());
		System.out.println("성별 : "+(user.getGender()==1?"남자":"여자"));
		System.out.println();
	});
	System.out.println();
	
	Data.getItemList().stream().forEach(item->{
		System.out.println(item.getName());
		System.out.println(item.getColor());
		System.out.println(item.getSize());
		System.out.printf("%tF\n", item.getDate());
		System.out.println();
	});
}

0개의 댓글