본문 바로가기
웹개발 수업/JAVA

웹개발_JAVA 19

by gugigugi92 2023. 2. 15.

  ※Stream 이어서

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import stream.User; 

public class StreamTest {

   public boolean checkEven(int number) {//filter사용, 조건식이기에 boolean타입  
      return number % 2 == 0;
   }


   public static void main(String[] args) {
//      filter(): 조건식이 true일 경우만 추출
	   			//filter은 return
	   StreamTest streamTest = new StreamTest();
	   IntStream.range(0, 10).filter(data -> data%2 ==0).forEach(System.out::println);
	   IntStream.range(0, 10).filter(streamTest::checkEven).forEach(System.out::println);//참조형으로
	   // 0~9 중 짝수 출력
       }
       }

출력결과

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import stream.User; 

public class StreamTest {
public static void main(String[] args) {
sorted(): 정렬
	   ArrayList<Integer> datas = new ArrayList<Integer>();
	   StreamTest streamTest = new StreamTest();
//	   IntStream.rangeClosed(1, 10).map(data -> 10 - data).forEach(datas::add);
	   IntStream.rangeClosed(1, 10).map(streamTest::change).forEach(datas::add); // 객체사용
	   //9~0까지 출력
	
	   System.out.println(datas);
	   	datas.stream().sorted().forEach(System.out::println);//오름차순 정렬
	   	datas.stream().sorted(Collections.reverseOrder()).forEach(System.out::println);// 다시 내림차순
        }
        }

출력결과

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import stream.User; 

public class StreamTest {
public static void main(String[] args) {
	//      collect(): 결과를 다양한 타입으로 리턴해준다.
	   	ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(30,20,90,40,80));
	   	datas.stream().sorted(); // 정렬 출력을 하기위해stream으로 이어써야함
	   	System.out.println(datas); // 정렬안됨
	   datas=(ArrayList<Integer>)datas.stream().sorted().collect(Collectors.toList());
	   	//stream.sorted 사용시 이렇게 사용해야 변수에 저장가능
	   System.out.println(datas);// 오름차순 정렬됨
	   	datas.sort(null); // 오름차순
	   	System.out.println(datas); // stream 안해도 정렬
//      컬렉션에서는 stream에 있는 sorted를 사용하지 않고 sort를 사용하여 직접 접근한 주소를 정렬시킨다.
	   	datas.sort(Collections.reverseOrder());//내림차순  
	   	System.out.println(datas);
        //	   List<Integer> results = datas.stream().sorted().collect(Collectors.toList());
//	   // 리스트 사용시 내림차순
//	   System.out.println(results);
        }
        }

출력결과

 

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import stream.User; 

public class StreamTest {
   public  Integer getTwoTimes(Integer number) {
      return number * 2;
   } // map에 사용
   
   public boolean checkEven(int number) {//filter사용, 조건식이기에 boolean타입  
      return number % 2 == 0;
   }
   
   public int change(int number) { //sorted 정렬  
      return 10 - number;
   }

   public static void main(String[] args) {
	ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(30,20,90,40,80));
	   	datas.stream().map(String::valueOf).collect(Collectors.joining(","));// joining:값전체를 원하는 구분점으로 연결하여 문자열 값으로 리턴
	   	System.out.println(datas);
        
        ArrayList<Integer> datas1 = new ArrayList<Integer>(Arrays.asList(10, 30, 15));
      System.out.println(datas1.stream().map(String::valueOf).collect(Collectors.joining(":")));
        }
        }

출력결과

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
//stream 실습

public class StreamTask {
   
   public static int changeToInteger(int c) {
      return c - 48;
   }
   
   public static void main(String[] args) {
//      10~1까지 ArrayList에 담고 출력
//      ArrayList<Integer> datas = new ArrayList<Integer>();
//      IntStream.range(0, 10).map(data -> 10 - data).forEach(datas::add);
//      System.out.println(datas);
      
//      1~10까지 ArrayList에 담고 출력
//      ArrayList<Integer> datas = new ArrayList<Integer>();
//      IntStream.rangeClosed(1, 10).forEach(datas::add);
//      System.out.println(datas);
      
//      ABCDEF를 각 문자별로 출력
//      String data = "ABCDEF";
//      data.chars().forEach(c -> System.out.println((char)c));
      
//      1~100까지 중 홀수만 ArrayList에 담고 출력
//      ArrayList<Integer> datas = new ArrayList<Integer>();
//      IntStream.rangeClosed(1, 100).filter(data -> data % 2 == 1).forEach(datas::add);
//      System.out.println(datas);
      
//      A~F까지 중 D제외하고 ArrayList에 담고 출력
//      ArrayList<Character> datas = new ArrayList<Character>();
//      IntStream.range('A', 'F').map(c -> c > 67 ? c + 1 : c).forEach(data -> datas.add((char)data));
//      System.out.println(datas);
      
//      5개의 문자열을 모두 소문자로 변경("Black", "WHITE", "reD", "yeLLow", "PINk"), toLowerCase() 사용
//      ArrayList<String> datas = new ArrayList<String>(Arrays.asList("Black", "WHITE", "reD", "yeLLow", "PINk"));
//      datas.stream().map(String::toLowerCase).forEach(System.out::println);
      
//      1~100까지 중 짝수만 ArrayList에 담고 출력
//      ArrayList<Integer> datas = new ArrayList<Integer>();
//      IntStream.rangeClosed(1, 100).filter(data -> data % 2 == 0).forEach(datas::add);
//      System.out.println(datas);
      
//      "Apple", "banana", "Melon" 중 첫 번째 문자가 대문자인 문자열 출력
//      ArrayList<String> datas = new ArrayList<String>(Arrays.asList("Apple", "banana", "Melon"));
//      datas.stream().filter(data -> data.charAt(0) >= 'A')
//                  .filter(data -> data.charAt(0) <= 'Z')
//                     .forEach(System.out::println);
      
//      한글을 정수로 변경
//      String hangle = "공일이삼사오육칠팔구";
//      String input = "일공이사";
//      input.chars().map(hangle::indexOf).forEach(System.out::print);
      
      
//      정수를 한글로 변경 "1024" -> '1' - 48 = 1
//      String hangle = "공일이삼사오육칠팔구";
//      String input = "1024";
//      input.chars().map(StreamTask::changeToInteger).forEach(i -> System.out.print(hangle.charAt(i)));
   }
}

※실습

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;

import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;

import sun.jvm.hotspot.gc.parallel.PSYoungGen;

public class StreamTask {
   
   
   public static void main(String[] args) {
//      10~1까지 ArrayList에 담고 출력
	   ArrayList<Integer> datas = new ArrayList<Integer>();
	   IntStream.range(0, 10).map(data ->10-data).forEach(datas::add); //10부터니까 data -10을 해준다
	   System.out.println(datas);

출력결과

 

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;

import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;

import sun.jvm.hotspot.gc.parallel.PSYoungGen;

public class StreamTask {
//      1~10까지 ArrayList에 담고 출력
	   ArrayList<Integer> datas = new ArrayList<Integer>();
	   IntStream.rangeClosed(1, 10).forEach(datas::add);
	   System.out.println(datas);
       }

출력결과

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;

import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;

import sun.jvm.hotspot.gc.parallel.PSYoungGen;
public static void main(String[] args) {
public class StreamTask {
      ABCDEF를 각 문자별로 출력
	   String data = "ABCDEF";
	   data.chars().forEach(c-> System.out.println((char)c)); {
		
	}
}

출력결과

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;

import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;

import sun.jvm.hotspot.gc.parallel.PSYoungGen;

public class StreamTask {
   
   public static void main(String[] args) {
//      1~20까지 중 홀수만 ArrayList에 담고 출력
	   ArrayList<Integer> datas = new ArrayList<Integer>();
	   IntStream.rangeClosed(1, 20).filter(data-> data%2!=0).forEach(datas::add);
	   System.out.println(datas);
       }
       }

출력결과

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;

import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;

import sun.jvm.hotspot.gc.parallel.PSYoungGen;

public class StreamTask {
   
   public static void main(String[] args) {
//      A~F까지 중 D제외하고 ArrayList에 담고 출력
	   ArrayList<Character> datas = new ArrayList<Character>();
	   IntStream.range('A', 'F').map(c-> c>67? c+1:c).forEach(data -> datas.add((char)data));
	   System.out.println(datas); 
       }
       }

출력결과

 

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;

import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;

import sun.jvm.hotspot.gc.parallel.PSYoungGen;

public class StreamTask {
   
   public static void main(String[] args) {
//      5개의 문자열을 모두 소문자로 변경("Black", "WHITE", "reD", "yeLLow", "PINk"), toLowerCase() 사용
		   ArrayList<String> datas = new ArrayList<String>(Arrays.asList("Black", "WHITE", "reD", "yeLLow", "PINk"));
	   	   datas.stream().map(String::toLowerCase).forEach(System.out::println);

출력결과

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;

import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;

import sun.jvm.hotspot.gc.parallel.PSYoungGen;

public class StreamTask {
   
   public static void main(String[] args) {
//      1~20까지 중 짝수만 ArrayList에 담고 출력
	   ArrayList<Integer> datas = new ArrayList<Integer>();
	   IntStream.rangeClosed(1, 20).filter(c -> c%2==0).forEach(datas::add);
	   System.out.println(datas);
       }
       }

출력결과

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;

import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;

import sun.jvm.hotspot.gc.parallel.PSYoungGen;

public class StreamTask {
   
   public static void main(String[] args) {
//      "Apple", "banana", "Melon" 중 첫 번째 문자가 대문자인 문자열 출력
	   ArrayList<String> datas = new ArrayList<String>(Arrays.asList("Apple","banana","Melon"));
	   datas.stream().filter(c -> c.charAt(0)>='A').
			   				filter(c->c.charAt(0)<='Z').
			   				forEach(System.out::println)
                            }
                            }

출력결과

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;

import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;

import sun.jvm.hotspot.gc.parallel.PSYoungGen;

public class StreamTask {
   
   public static void main(String[] args) {
//      한글을 정수로 변경
      String hangle = "공일이삼사오육칠팔구";
      String input = "구공삼사";
      input.chars().map(hangle::indexOf).forEach(System.out::print);
      }      //input 내용을 hangle의 인덱스 번호로 출력
      }

출력결과

package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;

import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;

import sun.jvm.hotspot.gc.parallel.PSYoungGen;

public class StreamTask {
   
   public static int changeToInteger(int c) {
      return c - 48;
   }
   
   public static void main(String[] args) {
//      정수를 한글로 변경 "1024" -> '1' - 48 = 1
      String hangle = "공일이삼사오육칠팔구";
      String input = "3024";
      input.chars().map(StreamTask::changeToInteger).
      				 //c-48이 담긴 메서드
      forEach(i -> System.out.print(hangle.charAt(i)));
   }}     	 	  	 // 한글의 인덱스
      // 메서드로 인해 한글이 정수로 변해서 hangle의 인덱스에 있는 값으로 바뀌어 출력

출력결과

'웹개발 수업 > JAVA' 카테고리의 다른 글

웹개발_JAVA 21  (0) 2023.03.06
웹개발_JAVA 20  (0) 2023.02.21
웹개발_JAVA 18  (2) 2023.02.15
웹개발_JAVA 17  (0) 2023.02.14
웹개발_JAVA 16  (0) 2023.02.09

댓글