TIL 2일차

인자약·2023년 11월 21일

TIL

목록 보기
2/14

1. List에 저장되어 있는 String 요소에서 대소문자와 상관없이 'java'라는 단어가 포함된 문자열만 필터링해서 출력하려고 합니다. 빈칸에 알맞은 코드를 작성해보세요.

import java.util.Arrays;
import java.util.List;

public class Example {
	public static void main(String[] args) {
    	List<String> list = Arrays.asList(
        	"This is a java book",
            "Lambda Expressions",
            "Java8 supports lambda expressions"
          );
          list.stream()
          [빈칸]
          .filter(a -> a.toLowerCase().contains("java"))
          .forEach(a -> System.out.println(a));
          
          👉우선 모두 소문자로 바꾸고 java가 포함된 문자열을 출력한다.
          
실행 결과
This is a java book
Java8 supports lambda expressions

2.List에 저장되어 있는 Member의 평균 나이를 출력하려고 합니다. 빈칸에 알맞은 코드를 작성해보세요.

public class Member {
	private String name;
    private int age;
    
    public Member(String name, int age) {
    	this.name = name;
        this.age = age;
    }
    
    public String getName() { return name; }
    public int getAge() { return age; }
}    
import java.util.Arrays;
import java.util.List;

public class Example {
	public static void main(String[] args) {
    	List<Member> list = Arrays.asList(
        	new Member("홍길동", 30),
            new Member("김길동", 40),
            new Member("김자바", 26)
        );
        
        double avg = list.stream()
        [빈칸]
        .mapToInt(Member::getAge)
        .average()
        .getAsDouble();
        
        👉 멤버의 나이를 맵핑하고 평균을 내고 더블로 변환한다.
      System.out.println("평균 나이: " + avg);
      
실행 결과
평균 나이: 32.0

3.List에 저장되어 있는 Member 중에서 직업이 '개발자'인 사람만 별도의 List에 수집하려고 합니다. 빈칸에 알맞은 코드를 작성해보세요.

public class Member {
	private String name;
    private String job;
    
    public Member(String name, String job) {
    	this.name = name;
        this.job = job;
    }
    
    public String getName() { return name; }
    public String getJob() { return job; }
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
	public static void main(String[] args) {
    	List<Member> list = Arrays.asList(
        	new Member("홍길동", "개발자"),
            new Member("김길동", "디자이너"),
            new Member("김자바", "개발자")
        );
        
        List<Member> developers = list.stream()
        [빈칸]
        .filter(m -> m.getJob().equals("개발자"))
        .collect(Collectors.toList());
        
        👉 개발자로 필터링 된 요소들을 collect() 메소드를 이용해 요소들을 컬렉션에 담는다.
        developers
        	.stream()
            .forEach(m -> System.out.println(m.getName()));
            
실행 결과
홍길동
김자바       

4. List에 저장되어 있는 Member를 직업별로 그룹핑해서 Map<String, List> 객체로 생성하려고 합니다. 키는 Member의 직업이고, 값은 해당 직업을 갖는 Member들을 저장하고 있는 List입니다. 실행 결과를 보고 빈칸에 알맞은 코드를 작성해보세요.

public class Member {
	private String name;
    private String job;
    
    public Member(String name, String job) {
    	this.name = name;
        this.job = job;
    }
    
    public String getName() { return name; }
    public String getJob() { return job; }
  	@Override
  	public String toString() {
  		return "{name:" + name + ", job:" + job + "}";
  	}
} 
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
  
public class Example {
  public static void main(String[] args) {
  	List<Member> list = Arrays.asList(
        	new Member("홍길동", "개발자"),
            new Member("김길동", "디자이너"),
            new Member("김자바", "개발자")
        );
  	
  	Map<String, List<Member>> groupingMap = list.stream()
  	[빈칸]
  	.colelct(Collectors.groupingBy(m -> m.getJob());
  	
  	👉그룹핑 키를 리턴한다.
  	System.out.println("[개발자]");
  	[빈칸]
  	groupintMap.get("개발자").stream()
  		.forEach(m -> System.out.println(m));
  	
  	👉그룹핑된 맵 중에 개발자를 출력한다.
  	System.out.println();
  
  	System.out.println("[디자이너]")
  	[빈칸]
  	groupintMap.get("디자이너").stream()
  		.forEach(m -> System.out.println(m));
  
    👉그룹핑된 맵 중에 디자이너를 출력한다.
  )
) 
  
실행 결과
[개발자]
{name: 홍길동, job:개발자}
{name: 김자바, job:개발자}
  
[디자이너]
{name: 김길동, job:디자이너}
profile
인자약velog

0개의 댓글