KoreaIt Academy/JAVA 예제

Stream을 사용한 예제

hongeeii 2021. 7. 27.
728x90
반응형

Stream을 이용하여 다음 예제들을 풀어봅시다.


//1~10까지 ArrayList에 담고 출력하세요.

ArrayList<Integer> datas = new ArrayList<>();
      IntStream.range(0, 10).forEach(i -> datas.add(i + 1));
      System.out.println(datas);

 

 //1~100까지 중 짝수만 ArrayList에 담고 출력하세요.

ArrayList<Integer> datas = new ArrayList<>();
  //    IntStream.range(1, 51).forEach(i -> datas.add(i * 2));
    //  IntStream.range(0, 50).forEach(i -> datas.add(i * 2));
      IntStream.range(1, 101).filter(i -> i % 2 == 0).forEach(i -> datas.add(i));
      System.out.println(datas);

----------3가지 방법으로 풀어 보았습니다.

 

//A~F까지 ArrayList에 담고 출력하세요.

ArrayList<Character> datas = new ArrayList<>();
      IntStream.range(65, 71).forEach(i -> datas.add((char)i));
      //IntStream.range(0, 6).map(i -> i + 65).forEach(i -> datas.add((char)i));
      //IntStream.range(0, 6).forEach(i -> datas.add((char)(65 + i)));
      System.out.println(datas);

 

//A~F까지 중 D제외하고 ArrayList에 담은 후 출력하세요.

ArrayList<Character> datas = new ArrayList<>();
      IntStream.range(0, 5).map(i -> (i > 2 ? i + 1 : i)).forEach(i -> datas.add((char)(i + 65)));
      System.out.println(datas);

 

//5개의 정수를 입력받은 후 ArrayList에 담고 최대값과 최소값 출력하세요.

ArrayList<Integer> datas = new ArrayList<>(Arrays.asList(10, 20, 50, 30, 40));
     
     
     ///방법 1
      System.out.println("최대값 : " + datas.stream().mapToInt(x -> x).max().getAsInt());
      System.out.println("최소값 : " + datas.stream().mapToInt(x -> x).min().getAsInt());
      
      
      
      ///방법 2
      List<Integer> maxAndMin = datas.stream().sorted().collect(Collectors.toList());
      
      System.out.println("최대값 : " + maxAndMin.get(maxAndMin.size() - 1));
      System.out.println("최소값 : " + maxAndMin.get(0));

 

//문자열을 5개 입력받고 모두 소문자로 변경하세요.

      Scanner sc = new Scanner(System.in);
      
      ArrayList<String> datas = new ArrayList<>();
      IntStream.rangeClosed(0, 4).forEach(i -> datas.add(sc.next()));
      datas.stream().map(String::toLowerCase).forEach(System.out::println);

 

//Apple, banana, Melon 중 첫번째 문자가 대문자인 문자열 출력하세요.

ArrayList<String> fruits = new ArrayList<>(Arrays.asList("Apple", "banana", "Melon"));
System.out.println(fruits.stream().filter(fruit -> fruit.charAt(0) >= 65).filter(fruit -> fruit.charAt(0) <= 90).collect(Collectors.joining(", ")));

 

//※map과 forEach만 사용하면 됩니다.

//한글을 정수로 변경하세요.

      String hangle = "공일이삼사오육칠팔구";
      Scanner sc = new Scanner(System.in);
      System.out.print("입력 : ");
      String data = sc.next();
      
      //문자열을 IntStream으로 변경 후 map에서 각 문자에 대한 번호를 indexOf에 전달한다.
      //해당 문자에 맞는 값을 hangle에서 찾은 후 해당 인덱스 번호를 가져와 기존의 c의 값을 대체한다.
      data.chars().map(c -> hangle.indexOf(c)).forEach(System.out::print);

 

//정수를 한글로 변경하세요.

      //문자열을 IntStream으로 변경 후 map에서 각 문자에 대한 번호에서 48을 빼주어야 사용자가 입력한 정수값이 된다.
      //입력한 정수를 hangle의 인덱스번호로 사용하여 해당 문자를 가져온다.
      String hangle = "공일이삼사오육칠팔구";
      Scanner sc = new Scanner(System.in);
      System.out.print("입력 : ");
      String data = sc.next();
      data.chars().map(c -> c - 48).forEach(c -> System.out.print(hangle.charAt(c)));

 

 

728x90
반응형

추천 글