Java 8 – Sorting stream on multiple fields Java를 사용하면서 데이터 집합을 Sorting을 할 때 조건, 필드가 여러가지가 될 수가 있다. 이때 여러 필드를 비교 하는 방법을 알아보고자 한다. 방법 우선 실제 상황을 가정하고 설명을 하는 것이 좋을 것 같다. 아래와 같은 데이터 클래스가 있다고 가정을 해보자. 정렬은 1차적으로 dateTime으로 한뒤 만약 같다면 sequnceNumber로 정렬을 해야 한다고 가정 public class CustomData { private ZonedDateTime dateTime; private int sequnceNumber; //getter, setter, 생성자 생략 } 필드 각각에 대한 comparators 생성 필드 각각에..
들어가며 Java 애플리케이션 내부에서 코드상으로 외부 JAR 파일을 실행시켜야 하는 경우가 있다. 이때 프로그램 내부에서 별도의 JAR 파일을 실행시키는 방법에 대해서 공유하고 한다. ProcessBuilder ProcessBuilder는 OS의 Command 명령을 실행하려 할때 사용되는 클래스이다. builder를 다양하게 설정이 가능하다. public void process(String imageDir) throws IOException { ProcessBuilder builder = new ProcessBuilder("java", "-jar", this.jarFileName); //argument도 적어줄 수 있다. ProcessBuilder builder = new ProcessBuilder(..
(Effective Java) 규칙24. 멤버 클래스는 되도록 static으로 만들라 중첩 클래스 중첩 클래스(nested class)란 다른 클래스 안에 정의된 클래스를 말한다. 자신을 감싼 바깥 클래스에서만 쓰여야 하며, 그 외의 쓰임새가 있다면 톱레벨 클래스로 만들어야 함 중첩 클래스의 종류 아래 중 첫번째를 제외한 나머지는 모두 내부 클래스(inner class)에 해당한다. 정적 멤버 클래스 다른 클래스 안에 선언되고, 바깥 클래스의 private 멤버에도 접근할 수 있다. 그 외에는 일반 클래스와 동일하다. 다른 정적 멤버와 똑같은 접근 규칙을 적용 받는다. private으로 선언하면 바깥 클래스에서만 접근할 수 있음 흔히 바깥 클래스와 함께 쓰일 때만 유용한 public 도우미 클래스로 쓰인..
(Effective Java) 규칙25. 톱레벨 클래스는 한 파일에 하나만 담으라 소스 파일 하나에 여러 클래스 선언 소스 파일 하나에 톱레벨 클래스를 여러 개 선언하더라도 자바 컴파일러는 불평하지 않는다. 다만, 아무런 득이 없을 뿐더러 심각한 위험을 감수해야 하는 행위다. 한 클래스를 여러 가지로 정의할 수 있으며, 그중 어느 것을 사용할지는 어느 소스 파일을 먼저 컴파일하냐에 따라 달라지기 때문 문제 상황 아래 소스 파일은 Main클래스 하나를 담고 있고, 다른 톱레벨 클래스는 다른 톱레벨 클래스 2개(Utensil과 Dessert)를 참조한다. public class Main { public static void main(String[] args) { System.out.println(Utensi..
들어가며 JavaFX를 사용하면서 UI를 테스트할 일이 종종 있는데 Test Code 상에서 UI를 전시하는 방법에 대해서 소개하고자 한다. 방법 UITest.java public class UITest extends Application { @Test public void test() { launch(); } @Override public void start(Stage primaryStage) throws IOException { //UI 전시 코드 작성 TimerController controller = new TimerController(); primaryStage.setScene(new Scene(controller)); primaryStage.setTitle("Timer Test"); prima..
들어가며 JavaFX를 이용해 실시간으로 업데이트되는 Timer 컨트롤을 구현해보고자 합니다. 원본 소스는 아래 위치에 있습니다. rlawlstjd0077/JavaFxPlayGround Contribute to rlawlstjd0077/JavaFxPlayGround development by creating an account on GitHub. github.com 구현 Timer.fxml 따로 CSS는 없어서 디자인 좀 구립니다.. 시각이 표현될 TextView를 Rectangle을 이용하여 만들어 줍니다. fx:root가 궁금하다면 아래 글 참고
(Effective Java) 규칙64. 객체는 인터페이스를 사용해 참조하라 규칙51에서 매개변수 타입을 클래스가 아니라 인터페이스를 사용하라고 했다. 조언을 "객체는 클래스가 아닌 인터페이스로 참조하라"고까지 확장할 수 있음 인터페이스 타입 적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라. 객체의 실제 클래스를 사용해야 할 상황은 '오직' 생성자로 생성할 때 뿐임 예) Set 인터페이스를 구현한 LinkedHashSet 변수를 선언 //좋은 예. 인터페이스를 타입으로 사용했다. Set sonSet = new LinkedHashSet(); //나쁜 예. 클래스를 타입으로 사용했다! LinkedHashSet sonSet = new LinkedHashSe..
(Effective Java) 규칙 62. 다른 타입이 적절하다면 문자열 사용을 피하라 문자열(String)은 텍스트를 표현하도록 설계되었고, 그 일을 아주 멋지게 해낸다. 다만 문자열은 워낙 흔하고 자바가 잘 지원해주어 원래 의도하지 않은 용도로도 쓰이는 경향이 있다. 문자열의 남용 문자열은 다른 값 타입을 대신하기에 적합하지 않다. 많은 경우 파일, 네트워크, 키보드 입력으로부터 데이터를 받을 때 주로 문자열을 사용함 자연스러워 보이긴 하지만 입력받을 데이터가 진짜 문자열 일때만 그렇게 하는 게 좋음 기본 타입이든 참조타입이든 적절한 값 타입이 있다면 그것을 사용하고, 없다면 새로 하나 작성하라. 입력 데이터가 수치형이라면 int, float, BigInteger 등 적당한 수치 타입으로 변환해야 함..
- Total
- Today
- Yesterday
- effective java
- intelij
- effectivejava
- JavaFX
- 자바
- 일본 여행
- JavaFX 테이블뷰
- 텐트
- 일본 자전거 여행
- JavaFX Table View
- 스프링부트
- springboot
- TableView
- Java UI
- JavaFX 종료
- 일본 배낭여행
- 자전거 여행
- windows
- 자전거
- 배낭여행
- 이펙티브자바
- 배낭 여행
- 이펙티브 자바
- java
- 일본여행
- 이펙티브
- git
- 인텔리제이
- JavaFX Window Close
- 방통대 과제물
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |