프로그래밍/JAVA 131

[Java] java.io.IOException: Server returned HTTP response code:500 for URL 해결 방법

java.io.IOException: Server returned HTTP response code:500 for URL 해결 방법 👉 나의 경우 파라미터 인코딩이 안돼서 나는 에러였음 인코딩한 파라미터를 url에 전달하면 오류 안남 적용 예시 String word = "parameter"; String encodeResult = URLEncoder.encode(word, "UTF-8"); String url = "http://localhost:8983/solr/solrProject/select?fq=title:"+encodeResult; 참고💡 URL 인코딩, 디코딩

[Java] 날짜와 시간 API (Joda-Time)

날짜와 시간 API Java의 기본 SDK에서 날짜와 시간을 다루는 java.util.Date 클래스와 java.util.Calendar 클래스의 불편함을 해소하고자 JDK 8에서는 개선된 날짜와 시간 API가 제공됨 기존의 날짜와 시간 API의 문제점 1️⃣ 불변객체가 아님 이 때문에 Calendar 객체나 Date 객체가 여러 객체에서 공유되면 한 곳에서 바꾼 값이 다른 곳에 영향을 미치는 부작용이 생길 수 있음 2️⃣ int 상수 필드의 남용 calendar.add(Calendar.SECOND, 2); Calendar를 사용한 날짜 연산은 int 상수 필드를 사용 첫 번째 파라미터에 Calendar.JUNE과 같이, 전혀 엉뚱한 상수가 들어가도 이를 컴파일 시점에서 확인할 방법이 없음 이 뿐만 아니..

[Java] Stream 생성 방법

Stream 생성 방법 예제 // Stream의 static 메서드 of 사용 - Stream.of(data) Stream stream = Stream.of("Java", "Lambdas", "Stream", "Example"); // Stream의 static 메서드 iterate 사용 - Stream.iterate(seed, operator) Stream.iterate(0, n -> n + 2) .limit(10) .forEach(System.out::println); // Stream의 static 메서드 generate 사용 - Stream.generate(() -> T) Stream.generate(Math::random) .limit(10) .forEach(System.out::println)..

[Java] Collection과 Stream 비교

Collection과 Stream 비교 Collection Stream for(int n: numbers){ ... } numbers.forEach(n -> ...) 외부반복(External Iteration) 제어 흐름 중복 발생 효율적이고 직접적인 요소 처리 지저분한 코드 유한 데이터 구조 API 내부반복(Internal Iteration) 제어 흐름 추상화 파이프-필터 기반 API 함축적인 표현 무한 연속 데이터 흐름 API 공통점 컬렉션과 스트림 모두 연속된 요소 형식의 값을 저장하는 자료구조의 인터페이스를 제공 둘 다 순서에 따라 순차적으로 요소에 접근 차이점 Collection Stream 각 계산식을 만날 때 마다 데이터가 계산됨 최종 연산이 실행 될 때에 데이터가 계산됨 자료구조 이므로 데..

[Java] 스트림(Stream)의 특징

스트림(Stream)과 관련된 용어 리덕션(Reduction) ✔ 대량의 데이터를 가공해 축소 하는 것 ✔ 데이터의 합계 , 평균값 , 카운팅 , 최대값 , 최소값 ✔ 컬렉션의 요소를 리덕션의 결과물로 바로 집계할 수 없을 경우에는 ? : 집계하기 좋도록 필터링 , 매핑 , 정렬 , 그룹핑의 중간 처리가 필요함 ( 스트림 파이프라인 필요성 ) 파이프라인(Pipeline) ✔ 여러 개의 스트림이 연결 되어 있는 구조 ✔ 파이프라인에서 최종 처리를 제외 하고는 모두 중간 처리 스트림 스트림(Stream)의 작업흐름 1️⃣ 스트림을 생성 2️⃣ 초기 스트림을 다른 스트림으로 변환하는 중간 연산을 지정. 여러 단계가 될 수도 있음 3️⃣ 종료 연산을 적용해서 결과를 산출. 종료 연산은 앞에서 지연된 중간 연산이..

[Java] 스트림(Stream)이란 ?

스트림(Stream)의 정의 스트림은 Java8부터 추가된 컬렉션(배열 포함)의 저장 요소(Element)를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자 Stream 활용하기 클래식 자바 스타일 예시(컬렉션 활용)👇 List lowPriceProduct = new ArrayList(); // 가격이 9000원 이하인 상품만 가지고 옴 for(Product product : item) { if(store.getPrice() < 9000) { lowPriceProduct.add(product); } } // 가격 순으로 정렬 Collections.sort(lowPriceProduct, new Comparator() { @Override public int compare(Dish o1, Dish..