반응형 IT/Java394 Map, Set, List 에 대해서 이번 포스팅에서는 자바에서 arraylist나 배열 말고 값을 저장할수 있는 또 다른 형태인 map, set, list 에 대해 다뤄보려고 한다. 구조는 다음과 같다. 먼저 각각에 대해 알아보면 list 순서와 중복이 있는 자료구조 map 키와 데이터를 같이 저장할 수 있는 자료구조 set 순서없고 중복이 존재할 수 없는 자료구조 즉 정리를 하면 List는 기본적으로 데이터들이 순서대로 저장되며 중복을 허용한다. Map은 순서가 보장되지 않고 Key값의 중복은 허용하지 않지만 Value값의 중복은 허용된다. Set은 순서가 보장되지 않고 데이터들의 중복을 허용하지 않는다. 그럼 사용법을 알아보면 다음과 같다. Map map = new HashMap(); map.put("A", 1); map.put("B".. 2022. 7. 30. 배열의 복사(깊은복사, 얕은복사) 포스팅 쓰기 앞서, 이 복사에 대한 개념은 현재 탭인 자바 뿐 아니라 다른 언어에서도 비슷하게 적용이 된다. 그냥 모르고 사용을 하면 위험하니 개념을 알려주기 위해 포스팅을 작성이고 java 탭에 작성한 이유는 테스트 코드가 자바 언어로 했기 때문이다. 배열이 있고 그 배열을 복사해야하는 때가 있다. 그럴때 그냥 변수 복사하듯이 복사를 하게 되면 아래와 같은 상황이 발생한다. int[] a = {1,2,3,4}; int[] b = a; 이렇게 코드를 짜면 이 그림처럼 작동을 한다. 두개의 변수가 같은 배열을 바라보고 A 가 변경되면 B에서도 변경된 값이 나온다. 사실 이러면 복사의 의미가 없다. 그래서 배열을 복사할때는 깊은 복사를 해줘야하고 깊은 복사는 다음 그림과 같다. 이렇게 하기 위한 코드는 다음.. 2022. 7. 29. @Autowired 대신 @RequiredArgsConstructor Spring 에서는 다양한 장점이 존재하는데 그중 하나는 의존성 주입(DI) 에 대한 개념이다. 이 개념이 어떤 의미인지 모른다면 아래 참고포스팅에서 확인하고 오면 도움이 될것이다. 여기서 나오는 annotation중 하나는 autowired 라는 annotation이고 이 annotation의 역할은 스프링 bean에 등록되어있는 객체를 주입해주는 역할이다. 하지만 스프링팀에서 autowired를 사용하는것보다 RequiredArgsConstructor를 사용하는것을 추천하는 글을 보았다. 일단 먼저 RequiredArgsConstructor annotation은 하는 역할이 자동으로 필수 생성자를 만들어주는 역할을 한다. 비슷한 annotation으로는 NoArgsConstructor, AllArgs.. 2022. 7. 26. substring , indexOf (lastIndexOf), charAt 을 이용한 문자열 추출 자바에서 String 을 다룰때 자주 사용하는 메서드들이다. String substring(int start) : 현재 문자열 객체 start위치부터 끝까지 문자열 발췌 String substrnig(int start, int end) : 현재 문자열 객체에서 start 부터 end 직전까지 문자열 발췌 Char charAt(int location) : 현재 문자열 객체에서 해당위치의 문자값 1개를 발췌. 반환값은 char형 int indexOf(int ch) : 현재 문자열 객체에서 ch문자가 첫번째로 발견된 위치를 반환,없으면 -1반환 int indexOf(String str) : 현재 문자열 객체에서 str를 찾아서 존재하면 첫째문자 위치를 반환하고 없으면 -1반환 int lastIndexOf(St.. 2022. 7. 24. JPA에서의 어노테이션 JPA에서나 Springdata JDBC에 사용되는 어노테이션에 관해서 다뤄볼 것이다. 엔티티 관련 @Entity 당 어노테이션을 붙이게 되면 해당 클레스가 데이터베이스의 테이블과 1대1 매칭이 됨. @Table(name="zzz") 해당하는 테이블과 매핑됨. @Column(aa 해당 맴버변수와 테이블의 Column와 맵핑됨 @Id 해당 어노테이션이 붙은 맴버변수는 해당 테이블의 Primary key가 된다. 객체를 식별할 유일값임. @GeneratedValue(stargety=?) AUTO(default):JPA 구현체가 자동으로 생성 전략을 결정한다. IDENTITY : 기본키 생성을 데이터베이스에 위임한다. 예를 들어 MySQL의 경우 AUTOINCREMENT를 사용하여 기본키를 생성한다. SEQU.. 2022. 7. 22. LocalDateTime 날짜 비교 자바에서 날짜 자료형중 하나인 LocalDateTime에서 날짜를 비교하려면 다음과 같이 비교를 하면 된다. import java.time.LocalDate; public class LocalDateCompare { public static void main(String[] args) { LocalDate date1 = LocalDate.of(2021, 6, 19); LocalDate date2 = LocalDate.of(2021, 6, 20); LocalDate date3 = LocalDate.of(2021, 6, 20); // isAfter() System.out.println(date1.isAfter(date2)); // false System.out.println(date2.isAfter(date.. 2022. 7. 21. Spring에서 Service와 ServiceImpl 를 나누는 이유(2022.07.19) 스프링에 대한 기본적인 이해는 있을 것이라는 전제하에, (만약 스프링에 대한 이해도가 없다면 아래 참고포스팅을 참고하여 스프링 예제를 한번 해보고 오는것을 추천한다.) service를 구현할때 service를 클래스로 구현할지, 아니면 interface로 구성 후에 implements 로 구현을 할지에 대한 고민을 한다. 하지만 요즘 코딩의 추세는 나누는것이 목적이다. 그 이유는 아래와 같다. Loose Coupling 객체 간의 결합도를 낮추어 변화에 유연한 개발을 하기 위해서이다. 하나의 인터페이스를 구현하는 여러 구현체가 있고 기능에 따라 적절한 구현체가 들어가서 다형성을 주기 위함이다. 또 하나의 인터페이스만 바라보니 의존관계도 줄일 수 있다. Spring 에서 JDK Dynamic Proxy 를.. 2022. 7. 18. Spring Bean 이란? 스프링에는 다양한 특징이 있지만 그중 하나는 제어의 역전 IoC 이다. 제어의 역전에 관한 내용은 아래 참고 포스팅을 참조하면 이해하기 쉬울 것이다. 스프링 컨테이너에서 직접 객체를 관리 하게 되는데 이것을 빈(Bean)이라고 한다. 빈 등록은 다양한 방법이 있는데 @Component 애노테이션이 있으면 스프링 빈으로 자동 등록된다. 또한, @Component를 포함하는 @Controller, @Service, @Repository 애노테이션도 스프링 빈으로 자동 등록된다. 스프링에서는 다음과 같은 순서로 동작을 한다. 컨트롤러에서 @Controller 어노테이션을 사용하게 되면 자동으로 스프링 빈에 등록이 되고, controller 클래스에서는 서비스 호출을 위해 @Autowired 라는 어노테이션으로.. 2022. 7. 17. 이클립스 자바 버전 변경 이클립스를 사용하다보면 프로젝트 별로 자바 버전이 상이하게 해야할 필요가 있다. 그럴 경우에 자바 버전을 변경하는 법을 포스팅 해볼것이다. 이클립스 상단 메뉴 [Window] > [Preferences] 좌측 메뉴 [Java] > [Installed JREs] 현재 설치되어있고, 이클립스 내에서 인식이 되는 jdk, jre가 여기에 나타난다. 추가를 하려면 Add.. 를 클릭 한다. jre home 변경한다.(자바 설치된 폴더 bin, lib 폴더 말고 최상단 경로) 다음 finish 이렇게 추가가 되면 아래처럼 jdk.1.6.0 이 추가되어있다. 프로젝트의 자바의 경로를 잡았다면 프로젝트 자바 버전을 바꿔볼것이다. 프로젝트 위에서 우클릭 후 Properties 에 들어간다. 좌측 Project Face.. 2022. 7. 16. 이전 1 ··· 35 36 37 38 39 40 41 ··· 44 다음 반응형