🙈

⃝ 동글동글 ⃝

🪐ᐩ˖ 🍎
728x90
반응형
SMALL

자바 38

[Java 기초] Thread(스레드) 실행제어

효율적인 멀티스레드 프로그래밍을 위해서는 정교한 스케줄링을 통해 프로세스에게 주어진 자원과 시간을 여러 스레드가 낭비 없이 잘 사용하도록 해야 한다. 스레드 상태 스레드의 생성과 소멸 과정 스레드를 생성하고 start()를 호출하면 바로 실행되는 것이 아니라 실행대기열에 저장되어 자신의 차례가 될 때까지 기다리고, 실행대기열은 Queue와 같은 구조로 먼저 실행대기열에 들어온 스레드부터 실행한다. 실행대기상태에 있다가 자신의 차례가 되면 실행상태가 된다. 주어진 실행시간이 다되거나 yield()를 만나면 다시 실행대기상태가 되고 다음 차례의 스레드가 실행상태가 된다. 실행 중에 suspend(), sleep(), wait(), join(), I/O block에 의해 일시정지 상태가 될 수 있다. 지정된 ..

Java/기초 2023.06.16

[Java 기초] Generics(제네릭)

Generics 제네릭 제네릭이란 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴피일 시의 타입체크(compile-time type check)를 해주는 기능 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여준다. 타입 안정성을 높인다는 것은 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여준다는 뜻이다. Generics : - 다룰 객체의 타입을 미리 명시해 줌으로써 번거로운 형변환을 줄여주는 것 - 인스턴스별로 다르게 동작하도록 하기 위해 만든 기능 제네릭의 용어 Box // 제네릭 클래스, 'T의 Box' 또는 'T Box'라고 읽는다. T //..

Java/기초 2023.06.02

[프로그래머스 고득점 Kit] 프로세스 - Stack/Queue - Lv2

⭐️ 코드 import java.util.*; class Solution { private static class Node { int priority; int idx; public Node(int priority, int idx) { this.priority = priority; this.idx = idx; } } public int solution(int[] priorities, int location) { int answer = 0; ArrayDeque queue = new ArrayDeque(); for (int i = 0; i < priorities.length; i++) { queue.add(new Node(priorities[i], i)); } // 숫자가 높을 수록 우선순위가 높음 while..

[프로그래머스 고득점 Kit] 기능개발 - Stack/Queue - Lv2

⭐️ 코드 (Queue 이용) import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { ArrayDeque queue = new ArrayDeque(); ArrayDeque speedsQueue = new ArrayDeque(); for (int i = 0; i < progresses.length; i++) { queue.addLast(progresses[i]); speedsQueue.addLast(speeds[i]); } ArrayList arrayList = new ArrayList(); while (!queue.isEmpty()) { for (int i = 0; i < queue.size()..

[프로그래머스 고득점 Kit] 베스트앨범 - Hash(해시) - Lv3

⭐️ 코드 (HashSet 이용) 정답 코드지만 직접 풀어보면서 출력해 봤던 테스트 코드!! 이번 문제는 완전 리스트와 해시맵의 중첩이었다... import java.util.*; public class 베스트앨범 { static class Solution { private static class Node { int idx; String genre; int play; public Node(int idx, String genre, int play) { this.idx = idx; this.genre = genre; this.play = play; } @Override public String toString() { return "Node{" + "idx=" + idx + ", genre='" + genre..

[프로그래머스 고득점 Kit] 의상 - Hash(해시) - Lv2

⭐️ 코드 (HashSet 이용) 1. HashMap에 옷의 종류별로 개수를 카운트한다. 2. 해당 옷을 안 입는 경우도 있기 때문에 경우의 수 + 1을 해준다. 3. 모든 옷을 안 입는 경우는 없기 때문에 결과 -1을 해서 개수 세기! import java.util.*; class Solution { public int solution(String[][] clothes) { int answer = 0; HashMap hashMap = new HashMap(); for (int i = 0; i < clothes.length; i++) { hashMap.put(clothes[i][1], hashMap.getOrDefault(clothes[i][1], 0) + 1); } int count = 1; for (..

[프로그래머스 고득점 Kit] 전화번호 목록 - Hash(해시) - Lv2

⭐️ 코드 (HashSet 이용) import java.util.*; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; HashSet hashSet = new HashSet(); for (int i = 0; i < phone_book.length; i++) { hashSet.add(phone_book[i]); } for (int i = 0; i < phone_book.length; i++) { for (int j = 0; j < phone_book[i].length(); j++) { if (hashSet.contains(phone_book[i].substring(0, j))) { return fals..

[Java 기초] 컬렉션 프레임워크 (Collections Frmaework)

⭐️ 컬렉션 프레임워크 (Collections Frmaework) 정의 : 데이트 군을 저장하는 클래스들을 표준화한 설계 - Collection : 다수의 데이터(데이터 그룹) - Framework : 표준화된 프로그래밍 방식 장점 - 다수의 데이터를 다루는데 필요한 다양하고 풍부한 클래스들을 제공 - 인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화 되어 있어 사용법을 익히기 편하고 재사용성이 높은 코드 작성 가능 Collection Framework의 모든 Collection Class들은 List, Set, Map 중 하나를 구현하고 있다. 💡 Collection 인터페이스 List와 Set의 조상인 Collection Interface에는 아래와 같은 메서드들이 정의되어 있다. 💡 Lis..

Java/기초 2023.05.26

[Java 기초] 정규식(Regular Expression) regex 패키지

정규식(Regular Expression) regex 패키지 java.util.regex 패키지 정규식이란 텍스트 데이터 중에서 원하는 조건(패턴, Pattern)과 일치하는 문자열을 찾아내기 위해 사용한다. 미리 정의된 기호와 문자를 이용하여 작성한 문자열에서 뽑아낼 수 있다. 정규식을 이용하여 많은 양의 텍스트 파일 중에서 원하는 데이터를 손쉽게 뽑아낼 수 있고, 입력된 데이터가 형식에 맞는지 체크할 수도 있다. 예를 들어 html 문서에서 전화번호나 이메일 주소만을 따로 추출하거나, 입력한 비밀번호가 숫자와 영문자의 조합으로 되어있는지 확인할 수도 있다. 정규식에 사용되는 기호와 작성방법에 대해서는 정말 광범위하기 때문에 자주 쓰이는 정규식의 작성 예를 보고 응용할 수 있을 정도까지만 학습하고 넘어..

Java/기초 2023.05.20

[Java 기초] Random 클래스

Random 클래스 Math.random() 메서드와 같이 난수를 생성할 수 있는 java.util.Random 클래스가 존재한다. // 두 코드는 동등하다. int num = (int)(Math.random() * 6) + 1; int num = new Random().nextInt(6) + 1; Math.random() 메서드는 내부적으로 Random 클래스의 인스턴스를 생성해서 사용하는 것이기 때문에 위의 코드 중 편한 것을 사용하면 된다. Math.random() 메서드와 Random 클래스가 다른 점은 종자값(seed) 시드를 설정할 수 있다는 것이다. 종자값을 설정하면, Random 인스턴스들은 모두 항상 같은 난수를 순서대로 반환하게 된다. import java.util.*; class Ra..

Java/기초 2023.05.20
728x90
반응형
LIST