Language/Java 184

스트림의 중개 연산

스트림 API에 의해 생성된 초기 스트림은 중개 연산을 통해 또 다른 스트림으로 변환 중개 연산은 스트림을 전달받아 스트림을 반환하므로, 중개 연산은 연속으로 연결해서 사용 가능 스트림의 중개 연산은 필터-맵(filter-map) 기반의 API를 사용함으로 지연(lazy) 연산을 통해 성능 최적화 대표적인 메소드 1. 스트림 필터링 : filter(), distinct() 2. 스트림 변환 : map(), flatMap() 3. 스트림 제한 : limit(), skip() 4. 스트림 정렬 : sorted() 5. 스트림 연산 결과 확인 : peek() 스트림 필터링 // 스트림 필터링 IntStream st1 = IntStream.of(7,5,5,2,1,2,3,4,5,6); IntStream st2 =..

Language/Java 2022.11.07

Stream

스트림 API의 동작 흐름 스트림 생성 -> 스트림 중개 연산 (변환) -> 스트림 최종 연산(사용) 컬렉션 자바에서 제공하는 모든 컬렉션의 최고 상위 조상인 Collection 인터페이스에는 stream() 메소드가 정의 되어 있음 따라서 Collection 인터페이스를 구현한 모든 List 와 Set 컬렉션 클래스에서도 stream() 메소드로 스트림 생성 가능 // 컬렉션 ArrayList list = new ArrayList(); for (int i = 0; i < 10; i++) { list.add(i); } Stream stream = list.stream(); stream.forEach(System.out::println); 배열 전체 배열 뿐만 아니라 특정 부분의 스트림을 생성 가능 // ..

Language/Java 2022.11.07

subList

subList 는 어떤 리스트의 fromIndex 와 toIndex 를 정해서 해당 리스트를 잘라서 서브리스트로 다시 보이게 하는것이다. 특정 리스트를 잘라서 사용할 때가 생길 때 사용하자. 구글링을 해보면 메모리 누수 이슈가 있는것 같은데... 뭐 알아서 판단하고 사용하자! list.subList(fromIndex, toIndex); 해당 리스트에서 시작할 인덱스와 끝날 인덱스의 값을 넣어주면 된다. 참고 만약 toIndex의 값이 5라고 치면 5번의 인덱스의 값은 나오지 않는다. 만약 특정 부분에서 마지막 인덱스 까지를 subList로 뽑고 싶다면 해당 list.size를 구한다음 list.size - 10 이런식으로 fromIndex를 정해주고 toIndex는 list.size로 설정하자. 그럼 끝..

Language/Java 2022.02.22

Double.isInfinite

증감 퍼센트나 연산을 하다보면 의도치 않게 값이 NaN 이나 Infinity 가 출력이 되는 경우가 있는데, 해당 값으로 화면에 보여주게 된다면 제대로 된 그래프가 되지 않을 것이다. 그걸 처리해보자. 사용법 Double.isInfinite(체크할 변수) double은 실수형이다. Double.isInfinite :: 해당 double 값이 Infinity 라면 true 아니라면 false 를 출력한다. Double.isNaN :: 해당 double 값이 NaN 이면 true 아니라면 false 를 출력한다. 예) 아래의 result 수식은 증감퍼센트를 구하는 수식이다. double startCount = 0.0; double endCount = 11; double result = (endCount - ..

Language/Java 2022.02.18

확장 for 문

일반 for 문 for (i = 0; i < tableName.length; i++) { if (menu === tableName[i]) { location.href = '/' + tableName[i] +'?pageName=' + tableName[i] + '' } } 자 이렇게 일반적인 for 문 이있다. 이걸 섹시하게 확장 for 문으로 바꿔보자. 바꾸는 이유? 섹시하니까 ㅋ 인덱스바운드 에러가 절대 일어날 수 없단다 :: i는 위에 선언 해둔거라 따로 선언하길 바람 확장 for 문 for (i in tableName) { if (menu === tableName[i]) { location.href = '/' + tableName[i] +'?pageName=' + tableName[i] + '' }..

Language/Java 2022.01.05

Jsoup를 활용한 로또 회차별 번호 추출

mvnrepository.com/artifact/org.jsoup/jsoup/1.13.1 이걸 깔아야한다. lib 안에 넣고 빌드 패스까지 package com.iotest; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; public class JsoupTest2 { public static void main(String[] args) { try { Document doc = Jsoup.connect("https://m.dhlottery.co.kr/common.do?method=main").get(); Elements titles = doc..

Language/Java 2021.04.29

Jsoup을 사용하여 html의 코드 불러오기

package com.iotest; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class JsoupTest { public static void main(String[] args) { try { Document doc = Jsoup.connect("https://sports.daum.net").get(); // 주소를 읽어오는 것 Elements ols = doc.select("ol.list_rank"); // class 는 . 이 붙는다 Elements ils = o..

Language/Java 2021.04.29

HashMap을 이용한 수도 퀴즈 게임

package com.iotest; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Scanner; import java.util.Set; public class MyCapital { private static Scanner sc = new Scanner(System.in); // HashMap은 key값을 사용한다, 랜덤추출 값을 갖는다. private HashMap map = new HashMap(); // map을 만들고 File dir = new File("src\\com\\iotest"..

Language/Java 2021.04.29

Book Manager System Program

package Book002; public class Book { private String BName;// 책이름 private String Author;// 저자 private String Publisher; // 출판사 @Override public boolean equals(Object obj) { if (obj instanceof String) { // obj가 책 이름과 같은 타입인지 체크 if (BName.equals((String)obj)) {// 책 이름과 obj(검색 책이름)를 비교 return true;// 동일할 경우 참을 리턴 후 종료 } } return false; // 거짓일 경우 거짓을 리턴 후 종료 } Book (String BName, String Author, Strin..

Language/Java 2021.04.06

채팅의 쓰레드화 04번

// Thread적용 package Server; import java.io.*; import java.net.*; import java.util.*; import Config.Config004; class Chatting extends Thread { // Thread의 extends Socket sObjS; Chatting(Socket sObjS) { this.sObjS = sObjS; // 디폴트 생성자가 없으니까 무조건 인자를 넣어줘야한다. } public void run() { // run은 한번만 실행된다. try { DataOutputStream dos = new DataOutputStream(sObjS.getOutputStream()); DataInputStream dis = new Dat..

Language/Java 2021.04.06