Java9 Stream Stream은 Java 8부터 제공되는 자료구조와 프로그래밍 API입니다. 이는 자료구조를 한 번 더 추상화하여, 다양한 종류의 자료구조를 동일한 방식으로 다룰 수 있게 해 줍니다. 또한, 스트림은 병렬 처리에 유리한 구조이므로 성능도 향상할 수 있습니다. 특징 원본의 데이터를 변경하지 않습니다. 즉, 스트림은 자바 컬렉션으로부터 받아와 사용하며, 원본 데이터는 그대로 유지됩니다. 스트림은 일회용입니다. 한 번 사용한 스트림은 어디에도 남지 않고 소멸됩니다. 사용법 1. stream 받아오기 subjectScore.stream() 2. stream 가공. filter() 메서드를 사용하여 원하는 조건에 맞는 요소만을 걸러내는 등의 가공 작업을 수행할 수 있습니다. .filter((Score score) .. 2024. 1. 12. Map의 Value로 Class ? 𖦹 ˍ 𖦹 프로젝트를 진행 중에 Map의 값 안에 더 많은 내용을 넣고 싶어졌다. Map map = new HashMap(); 과 같이 Map의 값을 클래스로 넣을 수 있는지 공부해 보았다. Main: Map map = new HashMap(); 를 사용하여 값으로 클래스인 Score 객체를 가지는 Map을 생성 Score 객체를 생성하고, map.put() 메서드를 사용하여 키와 Score 객체를 추가 그리고 map.get() 메서드를 사용하여 특정 키에 해당하는 Score 객체를 가져와서 필요한 정보를 출력 Score 클래스: Score 클래스는 필드 name과 score를 가지며, 추가적인 데이터를 담기 위한 Map 변수인 additionalData도 가진다. 또한 setAdditionalData() 메서드를.. 2024. 1. 11. Java 문자열 처리 이해: String vs. StringBuffer vs. StringBuilder 자바에서 문자열을 다룰 때 String, StringBuffer, 그리고 StringBuilder 세 가지 주요 클래스가 사용됩니다. 각 클래스의 역할을 이해하고 장단점을 파악하여, 각각을 언제 사용해야 하는지를 정리해 보았습니다. 1. String 장점: 불변성: String 클래스의 인스턴스는 불변성을 가지고 있어, 생성 후에는 값을 변경할 수 없습니다. 보안성: 값을 변경할 수 없음으로 의도하지 않은 수정을 방지하여 보안을 향상합니다. 문자열 풀: 리터럴 문자열을 위한 문자열 풀을 유지하여 메모리 소비를 줄입니다. 단점: 비효율적인 수정: 자주 발생하는 문자열 연결 또는 수정은 많은 임시 객체의 생성으로 이어져 메모리 공간이 낭비되고 속도가 느려질 수 있습니다. 메모리 오버헤드: 각 수정 작업은 새.. 2024. 1. 10. 상속 (Inheritance) 상속 객체 지향 프로그램에서 부모 클래스의 필드와 메서드를 자식 클래스에게 물려줄 수 있습니다. 부모 클래스(상위 클래스)와 자식 클래스(하위 클래스)가 있어 자식 클래스는 부모 클래스의 멤버를 상속받아 사용할 수 있습니다. 정의 클래스 간의 상속은 extends 키워드를 사용하여 정의할 수 있습니다. public class 자식클래스 extends 부모클래스 { } 상속을 사용하는 이유(장점) 적은 양의 코드로 새로운 클래스를 작성할 수도 있고 공통적인 코드를 관리하여 코드의 추가와 변경 이 쉬워질 수도 있습니다. 즉, 상속을 사용하면 코드의 중복이 제거되고 재사용성이 크게 증가하여 생산성과 유지보수성에 매우 유리해집니다. 조건 부모 클래스에 새로운 필드와 메서드가 추가되면 자식 클래스는 이를 상속받아.. 2024. 1. 9. 접근 제어자 (Access Modifier), Getter, Setter 접근 제어자 멤버 또는 클래스에 사용되며, 외부에서 접근하지 못하도록 제한합니다. 클래스, 멤버 변수, 메서드, 생성자에 사용되고, 지정되어 있지 않으면 default입니다. public : 접근 제한이 전혀 없이 누구나 접근할 수 있습니다. protected : 같은 패키지 내에서, 다른 패키지의 자손클래스에서 접근이 가능합니다. default : 같은 패키지 내에서만 접근이 가능합니다. private : 같은 클래스 내에서만 접근이 가능합니다. 접근제어자를 붙이지 않으면 package 멤버로 간주됩니다. package 멤버는 같은 패키지에 속하는 클래스로부터의 접근만을 허용합니다. 멤버: 클래스를 구성하는 필드와 메서드(생성자는 멤버에 속하지 않습니다.) 접근 제어자 사용 접근제어자는 클래스 내부에 .. 2024. 1. 8. List 자바 표준 라이브러리에 Collection 클래스의 일부인 List에 대해 정리하겠습니다. List 인터페이스는 Collection 인터페이스를 확장하고 요소의 시퀀스 또는 목록에 대한 특정 동작을 추가합니다. 또한 List 인터페이스를 구현하는 가장 일반적으로 사용되는 클래스는 ArrayList, LinkedList가 있습니다. 1. ArrayList ArrayList는 Java의 List 인터페이스의 동적 배열 구현입니다. 즉, 요소가 추가되거나 제거될 때 동적으로 크기를 조정할 수 있습니다. LinkedList보다 메모리 오버헤드가 덜 필요하므로 메모리 효율성이 더 높습니다. 인덱스를 사용하여 요소에 대해 빠르고 효율적인 액세스를 제공합니다. 시간 복잡도 O(1) 요소를 삽입, 삭제하는 것은 비효율.. 2024. 1. 5. 메서드(method) 1. 메서드(method) 자바를 포함한 객체 지향 프로그래밍 언어에서 클래스 내부에서 정의된 함수 (객체의 함수)를 메서드라고 합니다. 또한 객체의 행위를 뜻하며 객체 간의 협력을 위해 사용합니다. 2. 메서드 선언 방법 리턴타입, 매서드 이름, 매개변수를 작성하고 중괄호 안에 원하는 목적의 코드를 작성합니다. 리턴타입 메서드명(매개변수, ...) { 실행할 코드 작성 } 3. 리턴타입 메서드가 실행된 후 호출을 한 곳으로 값을 반환할 때 해당 값의 타입을 의미합니다. 반환할 값이 없을 때는 리턴타입에 void를 작성해야 합니다. double brakePedal() {...} // double 타입 반환 char changeGear(char type) {...} // char 타입 반환 boolean .. 2024. 1. 4. 객체지향 프로그래밍 1. 객체(Object) 객체는 세상에 존재하는 물체를 뜻하며 식별이 가능한 것을 의미합니다. 객체는 속성과 행위로 구성되어 있으며, Java에서는 속성과 행위를 필드와 메서드로 정의하여 구현할 수 있습니다. 현실 세계에 있는 객체를 소프트웨어의 객체로 설계하는 것을 '객체 모델링'이라고 합니다. 2. 객체 간 상호작용 행위를 정의하는 Java의 메서드를 통해 객체 간 상호작용이 이루어집니다. 또한 소프트웨어의 객체들은 메서드를 통해 데이터를 주고받습니다. 예를 들어 1) Person 객체는 Car 객체가 가지고 있는 gasPedal() 이라는 메서드를 호출합니다. 2) gasPedal(50); 와 같이 메서드 괄호 안에 50의 매개값을 넣어 호출하면, Car 객체는 해당하는 50의 데이터를 전달 받아 .. 2024. 1. 3. 자료구조(Data Structure) - Java 자료구조는 컴퓨터 프로그램에서 데이터를 처리하기 위해 만든 구조로 List, Stack, Map 등이 있습니다. Java 프로그래밍에서 제공하는 컬렉션은 배열보다 다수의 참조형 데이터를 더 효과적으로 처리 할 수 있는 기능을 가지고 있습니다. 1. ArrayList 배열처럼 일렬로 데이터를 저장하고 조회하여 인덱스로 값을 하나씩 조회합니다. 참조형 변수로 저장하는 ArrayList는 동적 배열입니다. (크기가 가변적으로 늘어납니다) Array는 기본형 변수로 저장하는 정적 배열. ArrayList intList = new ArrayList(); // 선언 + 생성 intList.add(1); // 추가 intList.remove(1); // 삭제 2. LinkedList 메모리에 남는 공간을 요청해서 빈.. 2024. 1. 2. 이전 1 다음