본문 바로가기

JAVA

(52)
[JAVA] StreamAPI를 이용 한 List 값 중복 제거 가장 기초적인 방법은 반복문을 통해 중복을 제거하는 방법이 있다. Java 8 이상인 경우 Stream API 를 사용할 수 있다. stream.distinct() 를 이용해 간단하게 중복 된 데이터를 제거 해보자. public class Main { public static void main(String args[]) { List list = new ArrayList(); list.add("ABCD"); list.add("ABCD"); list.add("A"); list.add("ABC"); list.add("AC"); list.add("AB"); list.add("AB"); list = new ArrayList( list.stream().distinct().collect(Collectors.toLis..
[API] Swagger : Parser error missed comma between flow collection entries 원인 / 해결 방법 Errors Hide Parser error missed comma between flow collection entries Swagger 버전도 맞고, 모든 Api 경로가 일치 하는데 해당 에러가 계속 발생했다. comma 가 누락 됐다고 하는데 사용한 곳이 없다. 구글링 해보니 comma 뿐이 아니라 따옴표, 대괄호 등 어딘가에서 잘못 사용한 경우 해당 에러가 발생하는 것 같다. 내용은 comma 이지만 comma가 아닐 수도 있다는 것이다. @Column(name = "sample") @ApiModelProperty(notes = "예제", example = "[sample]'/test/api/sample/sampleId") @ApiParam(value="예제") private String samp..
[JAVA] object List to map using stream - Object List를 Map 으로 변환하기 Object 를 Map 으로 바꾸고 싶었다. stream.map().collect(Collectors.toList()) 를 사용하면 유연한 변화가 가능하지만, 타입 변환만 하면 되기에, ObjectMapper 를 사용해서 바꿔준다. public void sampleMapper(Object obj) { ObjectMapper mapper = new ObjectMapper(); Map objMap = mapper.convertValue(obj, new TypeReference Entity, List > Map 등 다양한 변환이 가능하다. stream 보단 간편하지만 자유도는 떨어진다. 그리고 mapper.converValue 로 변환 시 Map의 구현체가 LinkedHashMap 이다.
[JAVA] List를 comma(,)로 구분된 String(문자열)으로 변환하기 List 안의 내용을 , 로 구분을 줘서 하나의 문자열로 연결하고 싶었다. for문을 이용하여 하나씩 추가할 수도 있지만, 자바에서 제공하는 라이브러리 StringUtils에 간편한 메서드가 존재한다. 먼저 StringUtils 라이브러리를 추가해야 한다. lib 폴더에 직접 넣을 경우 https://commons.apache.org/proper/commons-lang/download_lang.cgi Lang – Download Apache Commons Lang Download Apache Commons Lang Using a Mirror We recommend you use a mirror to download our release builds, but you must verify the integr..
[JAVA] Java Stream - 두 개의 List 객체 비교하기 Stream. -Match Method allMatch() : 모든 요소들이 매개 값(Predicate)로 주어진 조건을 만족하는지 조사 anyMatch() : 최소한 한 개의 요소가 주어진 조건에 만족하는 지 조사 noneMatch() : 모든 요소들이 주어진 조건을 만족하지 않는지 조사 1. 중복 되는 값 찾기. List list = 값; List vaildList = 값; List noneEntityList = list.stream().filter(l -> vaildList.stream().anyMatch(n -> { return l.Id().equals(n.Id()); })).collect(Collectors.toList()); 2. 중복 되지 않는 값 찾기 List list = 값; List v..
[JAVA] querydsl Unrecognized token '': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false') at [Source: (String)""; line: 1, column: 9] - Error 원인/해결 Entity 연동 한 DB Table을 바꿨을 뿐인데, 해당 에러가 발생했다. querydsl Unrecognized token '': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false') at [Source: (String)""; line: 1, column: 9] 구글링을 해봤지만, 전부 Json parsing 과정에서 발생한 에러라고 한다. 나는 가져올 때 나는 에러인데? 한참을 삽질하다가, 문득 DB와 Entity를 보고 있는데 데이터 타입이 다른게 하나가 있다. 설마 타입 달라서 발생한 에러인가? 하고 수정했다. 바로 해결... 너무나도 허무한 에러. 왜 에러 내용은 id 값이 틀렸다고 하면서, ..
[JPA] NonUniqueResultException : query did not return a unique result: 2 NonUniqueResultException : query did not return a unique result: 2 조회 값이 2개 이상인데 1개만 조회 해서 발생한 에러이다. 나는 List 로 받아놓고 Class로 담으려고 해서 발생했다. List 로 담으면 된다.
[JAVA] Can not deserialize instance of '' out of START_OBJECT token Error - JSON 데이터 Map 변환 시 에러 이것도 타입 미스 에러이다. Can not deserialize instance of '' out of START_OBJECT token ObjectMapper mapper = new ObjectMapper(); Sample s = mapper.convertValue(data, Sample.class); 보통 ObjectMapper 사용 시 발생하는 에러인데, mapper.convertValue mapper.readValue 메서드 상관없이 발생한다. 타입이 달라서 발생했기 때문에. JSON 데이터 전달 하는 쪽 (프론트) 과, Entity(VO) 쪽 변수/객체 타입이 전부 일치하는지 확인하면 된다. 대부분은 List 형식인데 그냥 받아서 발생했더라. 배열 [] 인지 List 인지도 확인 하시길. 나는 ..
[JAVA] HashMap Key,Value 가져오기 1. Key, Value 모두 가져올 경우 키와 값 모두 가져와야하는 경우 entrySet() 메서드 또는 forEach() 문을 사용한다. Map.Entry 인터페이스의 entrySet() 메서드를 사용한다. Map.Entry 인터페이스는 Map 객체의 키와 값을 접근할 수 있도록 해주는 getKey(), getValue() 함수가 존재한다. Map map = new HashMap(); map.put("test", 1); map.put("sample", 2); for (Map.Entry data : map.entrySet()) { System.out.println(String.format("Key (name) is: %s, Value (age) is : %s", data.getKey(), data.ge..
[JAVA] JSON Data to JAVA Class(Object) - Json 데이터 객체(VO)로 변환(파싱) 1. jackson-databind 라이브러리 추가 Maven. com.fasterxml.jackson.core jackson-databind 2.13.0 Gradle. // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.13.0' 2. 데이터 파싱(변환) ObjectMapper mapper = new ObjectMapper(); TestVo testVo = mapper.convertValue(data, TestVo.class); json 데이터의 변수..