java 13

[Java] ListIterator: 리스트 순회를 위한 양방향 인터페이스

ListIterator 는 List 컬렉션을 순회할 때 하용하는 인터페이스이다. ListIterator 를 사용하면 요소의 추가, 삭제, 이전 요소 및 다음 요소에 접근하는 등의 작업을 할 수 있다. ListIterator 주요 메서드 add(E e): 해당 리스트에 전달된 요소를 현재 커서 위치에 추가한다. hasNext(): 해당 리스트를 순방향으로 순회할 때 다음 요소가 있는지 확인한다. 다음 요소가 있으면 true를 반환한다. hasPrevious(): 해당 리스트를 역방향으로 순회할 때 이전 요소가 있는지 확인한다. 이전 요소가 있으면 true를 반환한다. next(): 리스트의 다음 요소를 반환하고, 커서의 위치를 순방향으로 이동한다. nextIndex(): next() 메소드를 호출하면 반환..

알아가기/Java 2024.04.01

[Java] MathContext 정확도를 조절하는 자바 클래스

MathContext는 자바의 java.math 패키지에 포함된 클래스로, BigDecimal 연산의 수학적 설정(정밀도와 반올림 모드)을 지정하는 데 사용된다. 정밀도(Precision)는 결과가 표현할 수 있는 최대 자릿수를 의미한다. 예를 들어, 정밀도가 5인 경우, 결과는 최대 5자리 숫자를 가질 수 있다. 반올림 모드(Rounding Mode)는 정밀도를 초과하는 숫자를 어떻게 처리할지 결정하는 규칙이다. 예를 들어, 반올림 모드가 HALF_UP인 경우, 소수점 이하의 숫자가 5 이상이면 올림하고, 그렇지 않으면 버림한다. MathContext는 이런 설정들을 모아둔 것으로, BigDecimal 연산 시에 이를 인자로 전달하여 연산 방식을 제어할 수 있다. 정밀도 사용 import java.ma..

알아가기/Java 2024.01.27

[Java] Arrays.stream() 및 Arrays.copyOfRange() 함수

Arrays.stream() Java8에서 소개된 메서드로, 배열을 스트림으로 변환하는 기능을 제공한다. 이 함수를 사용하면 배열의 각 요소를 순차적으로 처리하고 중간 또는 최종 연산을 수행할 수 있다. 스트림은 함수형 프로그래밍의 개념을 도입하여 코드를 더 간결하게 작성할 수 있게 해준다. stream() 예제 코드 1 import java.util.Arrays; import java.util.stream.IntStream; public class ArrayStreamExample { public static void main(String[] args) { int[] numbers = { 1, 2, 3, 4, 5 }; // 배열을 스트림으로 변환 IntStream stream = Arrays.strea..

알아가기/Java 2023.08.29

[Java] 맥북 Tomcat 설치 후 ./startup.sh 실행 시 권한 거부 해결

permission denied: ./startup.sh 맥북에 Tomcat 을 tar.gz 파일로 다운받아 압축을 해제 후 터미널로 bin 폴더를 찾아가 ./startup.sh 로 톰캣 서버를 실행하였다. 하지만 permission denied 가 뜨고 실행되지 않았다. 이를 해결하기 위해서 파일 권한을 변경해준다. 초기에는 문제 해결에 급급해 모두에게 최고 권한을 부여했는데 다시금 숨을 돌리며 확인하고 나서 Owner 빼고는 나머지 쓰기 권한을 제거하였다. chmod a+x startup.sh stackoverflow 에서 Tomcat 리눅스 질문으로 올라온 글이 있는데 위의 명령어로 쓰면 된다고 하였으나 sudo 를 추가하여도 나는 변경점이 없었다. chmod 755 startup.sh 그래서 추가..

알아가기/Java 2023.01.26

[Java] substring() 원하는 위치의 문자열을 가져오기

String class 와 substring() String class 로 생성된 문자열은 char 로 이루어진 단일 문자들의 배열이라고 볼 수 있다. 따라서, String 문자열에서 index 를 이용하면 필요한 위치의 연결된 문자들을 return 할 수 있다. 이와 같이 index 를 이용한 문자를 가져오기 위해서는 substring() 을 사용할 수 있다. 두 가지 타입 substring() 은 두 가지 형태의 parameter 를 입력할 수 있는데, 시작위치만 표기하여 시작부터 끝까지 데이터를 반환하거나 시작위치와 끝위치를 입력하여 선택 부분에 대한 문자를 반환할 수 있다. from start point // 시작 위치만 입력. public String substring (int start_ind..

알아가기/Java 2023.01.21

[Java] 공백 없는 연속된 숫자들 분리하여 배열에 입력받기 (split, toCharArray)

자바로 코딩 테스트 문제를 풀 때, 띄어쓰기로 공백이 형성된 여러 단일 숫자들의 데이터는 간단하게 배열로 작성이 가능하나, 공백 없이 한 번에 나열된 숫자들은 각각 띄워서 배열로 저장을 하려면 번거로운 작업이 필요하다. split() String[] strArr = sc.next().split(""); 첫째, 임시 배열 strArr 에 .split("") 으로 분할하여 입력받는다. numberArr[i][j] = Integer.parseInt(strArr[j]); 둘째, 입력받은 문자형 숫자를 하나씩 꺼내어 Integer.parseInt() 로 int 변환을 한다. 적용 코드 // using the split() package input_numbers; import java.util.Arrays; imp..

알아가기/Java 2023.01.12

[Java] ArrayList 모든 원소 출력하기

for-each & Arrays 반복 출력 실행을 통해 원소를 매번 출력하는 방법과 Arrays 를 통해 단번에 내부 원소를 확인하는 방법. for-each 를 이용한 출력. // for-each 를 이용한 출력. for (Object element : myList) { System.out.println(element); } Arrays 를 이용한 출력. // Arrays 를 이용한 출력. System.out.println(Arrays.deepToString(myList.toArray())); 실행 코드 import java.util.List; import java.util.ArrayList; import java.util.Arrays; public class MyClass { public static ..

알아가기/Java 2022.12.31

[Java] 파일 상대경로 설정 (Relative Path on Mac)

맥 환경에서 PrintWriter 을 이용하여 절대경로와 상대경로에 파일을 생성하고 그 경로의 차이를 예시로 확인한다. 절대경로 File f = new File("/Users/apple/java/01_test/newFile01.txt"); 기본적으로 맥에서 절대경로는 Users 에서 부터 시작된다. 윈도우로 보자면 C: 맥에서 절대경로로 파일에 접근하려면 "/Users/{account name}/files/01_test/newFile01.txt" 형식으로 작성해야 한다. 절대경로는 Finder 에서 Get info 등을 이용하여 나타나는 경로를 복사 붙여넣기 하면 간단히 해결된다. 이 절대경로를 이용하여 "newFile01.txt" 파일을 생성하였다. 프로젝트 위치 File f = new File("ne..

알아가기/Java 2022.12.27

[Java] 잘못된 입력에 대해 exception 으로 재입력 유도

while 그리고 exception 사용자의 입력을 받을 때 프로그램이 정상적으로 작동하기 위한 조건에 맞지 않는 입력이 들어오면 exception 을 사용하여 재 입력을 유도한다. 이를 위해 while 과 try 그리고 continue 를 이용할 수 있다. 예를 들어 사용해 보면, 입력은 숫자만 받아야 하는 조건이 있다. 숫자인지 문자인지 일단 입력받고 판별하기 위해 모든 입력을 문자로 입력받는다. 그리고 이를 숫자형으로 변환하는 과정에서 try 와 catch 를 사용하고 숫자가 맞다면 실행되고 있는 while loop 를 break 로 빠져나간다. 하지만, 입력 데이터에 문자가 섞여 있다면 catch exception 으로 분류되어 메시지가 출력되고 continue 를 만나게 되어 break 가 실행..

알아가기/Java 2022.12.26

[Java] array 값 정렬하기 w/o Arrays.sort()

조건이 만족하지 않을 때까지 swap array 안의 value 들이 서로 인접해 있는 value 와 서로 크기 비교를 한다. 이 과정은 for loop 으로 이루어지고 그 외부를 감싸는 while loop 를 멈추지 않게 한다. 만약 모든 정렬이 완료되어 더 이상 크기 비교 조건을 만족하지 않으면 그 회 while loop 는 false 값을 유지하여 종료가 된다. import java.util.Arrays; public class Main { public static void main(String[] args) { int[] array = {12, 56, 34, 89, 23, 67, 73}; int[] sorted = sortIntegers(array); System.out.println(Arrays..

알아가기/Java 2022.12.24