반응형

프로그래밍 언어/JAVA(자바) 22

[자바/java] 이차원 배열 클론, Clone(), Object.Clone()

이차원 배열을 clone시키다 발생한 에러 해결방법을 공유하고자 글을 씁니다. Clone ? clone()은 Object클래스에 정의돼있다. 생성된 객체와 같은 값을 가진 복사본의 인스턴스를 생성하는 일을 한다. 개인적으로는 원래의 객체 값을 다시 사용하고 싶거나 일시적인 연산을 위해 사용한 적이 있다 clone()를 객체를 사용하기 위해서는 해당 객체에 Cloneable이라고 하는 인터페이스 구현체를 implements 해줘야 한다. 기본형에 대해서는 값 복사가 이뤄지지만, 사용자 클래스의 객체맴버에 대한 완전한 값 복사는 지원하지 않는다. 얕은 복사라고도 하는데, 주소복사가 이뤄지기 때문에 복사본의 객체에 참조형 맴버변수가 존재한다면, 원본 객체에도 영향을 미친다. 실제로 이를 코드 구현 중 맞닥뜨렸..

[자바/java] 우선순위 큐 정렬하기 priorityQueue sort

Heap 구조에 대해서는 tosuccess.tistory.com/31?category=853902 를 참고해주세요! 우선순위 큐는 힙(Heap)구조를 가지며, 정렬 기준에 따라 가장 큰 값이 먼저 나오는 MaxHeap을 만들 수 있고, 가장 작은 값이 나오는 MinHeap을 만들 수 있다. 이번에는 우선순위 큐를 정렬하는 방법에 대해 다뤄보겠다.! 1. 우선순위 큐 사용하기 1 2 3 4 5 6 7 8 9 10 11 12 13 public static void main(String[] args) { PriorityQueue priorityQueue = new PriorityQueue(); priorityQueue.add(4); priorityQueue.add(6); priorityQueue.add(5);..

[자바/java] Map, HashMap - key, value 값 가져오기(feat. Set, Iterator)

HashMap을 정리한 내용은 tosuccess.tistory.com/138 여기를 참고하세요! HashMap 데이터를 다루기 좋은 연산 방법을 몇가지 정리했습니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243 public static void main(String[] args) { HashMap hm = new HashMap(); hm.put("안녕", "하세요"); hm.put("식사", "하셨나요?"); hm.put("안녕히", "계세요"); //keySet을 이용한 방법 Iterator iter = hm.keySet().iterator(); while(iter.hasNext()) { String key ..

[자바/java] Set, HashSet 사용법 데이터 삽입, 삭제, 출력

Set이란? 자바 컬렉션에 HashSet은 Set 인터페이스의 구현 클래스다. Set은 한국말로는 "집합"이고, 따로 저장 순서를 유지하지는 않는다. 또한 중복 값을 허용하지 않는다는 특징을 갖고 있다. *순서를 유지하고 싶으면 LinkedHashSet 클래스를 사용하면 된다. 1. 객체 선언 - new HashSet(); 1 Set set = new HashSet(); cs 2. 데이터 삽입 - set.add() 1 2 3 4 5 6 Set set = new HashSet(); set.add("apple"); set.add("banana"); set.add("pyopyo"); set.add("kiwi"); cs 3. 데이터 삭제 - set.remove(object e); 1 2 3 4 5 6 7 8 S..

[자바/java] 순서대로 저장, 출력하는 HashMap - LinkedHashMap 사용하기

HashMap ? HashMap은 Map 인터페이스를 구현한 Map 컬렉션이다. 인터페이스를 상속하기 때문에 Map의 특성을 그대로 사용할 수 있다. Key-Value쌍의 데이터로 저장되는 구조를 갖고 있고 이 데이터는 모두 객체이다. 값은 중복될 수 있지만 key값은 고유한 값을 가져야 한다. 만약 이미 존재하는 key값과 동일한 key값을 put하게 되면 새로운 key값으로 교체된다. 우리는 자주 HashMap을 사용한다. key-value 쌍의 데이터를 표현하기 위해서이기도 하고, 자연스럽게 중복을 원하지 않는 key-value 알고리즘을 사용해야 할 때 주로 사용한다. LinkedHashMap ? HashMap은 위와 같은 특징을 갖고 있다. 하지만 한 가지 더 추가하자면 아래 사진과 같이 데이터..

[자바/java] int[] 배열 내림차순 정렬 (Integer[] 배열없이)

1 2 3 4 5 int[] a = {1,2,3,4,5,6}; a = Arrays.stream(a).boxed().sorted(Collections.reverseOrder()).mapToInt(Integer::intValue).toArray(); // a = {6,5,4,3,2,1} Colored by Color Scripter cs - 앞에 있는 게시물에는 int[] 배열을 Interger[]로 변환시키고 그 변환된 배열을 내림차순으로 정렬 후 다시 int[] 배열로 바꾸어 주었는데 위와 같은 방법으로 스트림을 사용하면 Integer변환 없이 사용할 수 있다.

[자바/java] Arrays.stream을 이용해 배열 최소값 찾고 응용해보기

Arrays.stream을 이용해 배열의 최솟값을 찾는다. 1 2 3 4 int[] arr = {5,2,42,512,62,37,84,63,8,9,3,51}; int min = Arrays.stream(arr).min().getAsInt(); Colored by Color Scripter cs -위와 같이 Arrays.stream(arr).min().getAsInt()로 배열의 최솟값을 한줄로 가독성 좋게 찾아낼 수 있다. 1 2 3 4 5 6 7 8 9 10 11 int[] arr = {5,2,42,512,62,37,84,63,8,9,3,51}; int min = Arrays.stream(arr).min().getAsInt(); int[] arr2 = Arrays.stream(arr).filter(i -..

[자바/java] int[] 배열을 Integer[] 배열로 변환 (반대 과정 포함/내림차순 정렬)

int형 배열을 Integer형 배열로 변환. Integer형 배열을 int형 배열로 변환. 1 2 3 4 5 6 7 8 int[] a = new int[] {1,2,3,4}; //int[] - > Integer[] Integer[] conv = Arrays.stream(a).boxed().toArray(Integer[]::new); //Integer[] -> int[] a = Arrays.stream(conv).mapToInt(Integer::intValue).toArray(); Colored by Color Scripter cs - int[] 배열을 내림차순으로 쉽게 정렬하려면 Integer[] 배열로 바꾼 뒤 Collections.reverseOrder() 메서드를 사용하게 되는데 위에 같은 방법을..

[자바/java] stream사용해서 ArrayList<Integer>을 int[]로 반환하기

들어가기 앞서 자바 스트림이란? 자바 8부터 추가된 기능으로 함수형 인터페이스인 람다(lambda)를 활용할 수 있는 기술입니다. 장점 - 기존 배열이나 컬렉션을 반복문으로 순회하면서 하나씩 꺼내는 코드를 사용하지 않고 간결하게 표현 가능하다. - 멀티 스레드 환경에 필요한 코드를 작성하지 않아도 데이터를 병렬로 처리할 수 있다. 동작 단계 1. 배열이나 컬렉션으로 스트림을 생성(Stream Source) 2. 스트림을 필터링, 요소를 변환하는 중간 연산(Intermediate Operations) 3. 결과를 도출하는 단말 연산(Terminal Operations) [사용 예제] 1 2 3 4 5 6 7 ArrayList al = new ArrayList(); al.add(1); al.add(2); i..

반응형