본문 바로가기
728x90

[JAVA]/JAVA 기본44

자바에서 중복 요소를 남김없이 모두 제거하는 방법 💡 자바에서 리스트의 중복 요소를 제거하는 대표적인 방법에는 두 가지가 있다. 1. Set을 이용한 중복 제거 List list = new ArrayList(Arrays.asList("A", "B", "A", "C", "B")); Set setWithoutDuplicates = new LinkedHashSet(list); List listWithoutDuplicates = new ArrayList(setWithoutDuplicates); System.out.println(listWithoutDuplicates); // 출력: [A, B, C] Set은 자바 컬렉션 프레임워크의 인터페이스 중 하나로 중복된 요소를 허용하지 않고 순서를 보장하지 않는 자료구조이다. 중복을 허용하지 않기 때문에 동일한 요소가 .. 2024. 3. 21.
자바의 Object 클래스와 equals(), hashCode() 메서드에 대해 알아보자 Object 클래스 자바에서 모든 클래스가 공통으로 가지는 상위 클래스이다. 다르게 말하면 자바의 모든 클래스는 Java.lang.Object 클래스의 하위 클래스이다. 객체를 표현하는 데 필요한 메서드를 제공한다. 클래스가 명시적으로 상위 클래스를 상속하지 않을 경우 컴파일러가 자동으로 Object 클래스를 상속하게 된다. 따라서, 하나의 클래스가 다른 클래스를 상속받는다고 하더라도 올라가다 보면 그 맨 위는 Object 클래스인 것이다. Object Class의 메서드 메서드 명 역할 clone() 객체를 복제하여 새로운 인스턴스를 생성 equals(Object obj) 해당 객체와 매개변수로 전달된 객체를 비교하여 동일한지 여부를 반환 hashCode() 해당 객체의 해시코드 값을 반환 toStri.. 2023. 8. 17.
자바에서 대용량 엑셀 데이터를 읽어들이는 ExcelParser를 만들어보자. https://suzuworld.tistory.com/301 자바 프로젝트에서 엑셀 데이터를 읽어들이는 방법(Apache POI Workbook , Sax Parsing) 💡 엑셀 데이터를 자바 프로젝트에 업로드하는 방법을 정리한다. 나는 2 가지 방법을 사용하였고 이를 간단하게 정리하겠다. Apache POI Apache POI는 아파치 소프트웨어 재단에서 만든 라이브러리로 suzuworld.tistory.com 지난 글에서 엑셀 데이터를 자바 프로젝트에 불러와 다루는 방법에 대해 간단히 살펴보았다. 당시에는 한 개의 엑셀 데이터를 csv 파일로 변환하는 작업만 하면 됐기 때문에 SAX 방식에 대해 제대로 살펴보지 않았는데 이번에 회사의 신규 프로젝트에서 엑셀 데이터를 파싱 할 일이 또 생겨 관련 내용.. 2023. 8. 11.
정적 팩토리 메서드의 특징과 사용법을 예제로 이해하기 정적 팩토리 메서드(Static Factory Method) 개발자가 직접 구성한 Static Method를 사용하여 생성자를 호출하고, 그 생성자로 객체를 생성하는 디자인 패턴이다. 백문이 불여일타이니 직접 상황을 만들어보고 코드를 짜보자. 클라이언트로부터 요구사항을 전달받았다. Member에 대한 정보를 받아 DB에 저장하는 간단한 프로젝트를 만들라는 것이다. 아주 간단해 보이니 바로 만들어보자. MemeberController @RequestMapping @RestController public class MemberController { private final MemberService memberService; public MemberController(MemberService memberSer.. 2023. 6. 20.
Comparable과 Comparator.comparing() 간단 정리 Comparable 인터페이스 객체의 순서를 정의하는 데 사용한다. 클래스의 개체를 고유한 속성에 따라 비교하여 정렬할 수 있다. java.lang 패키지에 정의되어 있으며 compareTo()라는 단일 메서드를 포함한다. Comparable을 구현하면 Arrays.sort() 또는 Collections.sort()와 같이 Java에서 제공하는 정렬 알고리즘을 사용하여 해당 클래스의 객체를 쉽게 정렬할 수 있다. 자기 자신과 매개변수 객체를 비교한다. 사용 예시 public class Person implements Comparable { private String name; private int age; // Constructor and other methods @Override public int c.. 2023. 6. 14.
NPE와 Optional에 대해 간단히 알아보기 NullPointerException(NPE) 자바로 개발할 때 가장 많이 접하게 되는 런타임 예외이다. null인 개체에 액세스 하거나 작업을 수행하려고 할 때 발생한다. 다른 말로 유효하지 않은 인스턴스나 메모리 위치를 참조하여 발생하는 에러이다. NPE가 터지는 예 일반적으로 초기화되지 않은 변수를 사용하려고 시도하는 경우 객체를 사용하기 전에 null 값을 제대로 확인하지 않은 경우 객체 참조를 잘못 처리하는 경우 정리 위의 예와 같이 프로그램에 논리적 결함이 있을 때 개발자에게 알려주는 역할을 한다. NPE가 발생하지 않게 코드에서 적절한 null 검사 및 에러 처리가 가능하다. 그중 하나가 이 글에서 알아볼 Optional이다. Optional Java8에 추가된 기능으로 null이 올 수 있.. 2023. 6. 13.
BindingResult에 대해 간단히 알아보기 BindingResult 클라이언트로부터 전달받은 사용자의 입력 데이터에 대한 유효성 검사를 용이하게 하기 위해 Spring에서 제공하는 기능이다. 검증 오류가 발생하면 그 오류 내용을 보관하는 역할을 하는 객체이다. 입력 데이터의 유효성 검사에 실패하면 ConstraintViolationException이 발생되고 이때 에러 정보를 BindingResult에 저장하게 된다. BindingResult 의 사용 예시 @PostMapping("/register") public String registerUser(@ModelAttribute("user") @Valid User user, BindingResult bindingResult) { if (bindingResult.hasErrors()) { // Ha.. 2023. 6. 13.
내부 클래스를 static으로 선언해야 하는 이유 💡 인텔리제이에서 Inner 클래스를 static 키워드 없이 선언했더니 이런 문구가 나왔다. 내부 클래스를 static으로 선언하라는 이야기인데 왜 static으로 선언하라는 건지 몰라 궁금해서 찾아봤다. 사실 이걸 블로깅할 계획은 없었는데 전혀 모르는 내용이라 짚고 넘어가려고 한다. 외부 참조 차이 Inner A InnerA는 static이 붙어있지 않은 non-static inner class이다. 일반적인 이너 클래스는 자신을 만들어준 인스턴스에 대해 외부 참조를 갖는다. 이 참조는 이너 클래스가 외부의 멤버를 가져와 사용하지 않아도 암묵적으로 연결한다. 이를 '숨겨진 외부 참조'라고도 한다. 외부에 대한 참조를 가지고 있기 때문에 이너 클래스도 외부의 클래스 자원을 사용할 수 있다는 장점이 있다.. 2023. 6. 9.
728x90