Category Archives: JAVA

[java] List 의 진정한 deep copy 에 대하여

By | 2월 2, 2021

newList.addAll(oriList); 는 언뜻 deep copy 인 것처럼 보이지만 아니다. 커스텀 클래스인 경우에는 Clonable 을 implement 하기도 한다고 한다. 나는 주로 List<Map> 구조를 사용하기 때문에 그냥 아래와 같이 했다. List<Map<String, Object>> newList = new ArrayList<>(); oriList.forEach(el -> { newList.add(new LinkedHashMap<>(el)); // 이걸로 완전한 deep copy가 이루어 지는지는 아직 모르겠다. });

[java] 여러 개의 문자열에 대해 equals 비교가 아닌 contains 비교를 해 주는 메서드 (StringUtils.containsAny())

By | 9월 18, 2020

* commons StringUtils.containsAny([타겟 문자열], [비교대상1], [비교대상2]..);   * containsAll() 같은 건 없지만, 그거 비슷하게 구현한 메서드 public static boolean hasAndKey(String value, String… keys) { for (String key : keys) { if (value.contains(key) == false) { return false; } } return true; }    

웹 관련 유틸 클래스 (자작)

By | 8월 13, 2020

  package com.app.util; import java.util.Locale; import java.util.Properties; import javax.servlet.http.HttpServletRequest; import org.springframework.context.MessageSource; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PropertiesLoaderUtils; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import com.util.StringUtil; import lombok.extern.slf4j.Slf4j; /** * 웹 관련 유틸 클래스 * * @author STEVE */ @Slf4j public class WebUtil { /** * 현재 request url 에서 [http(s)프로토콜 부터 도메인까지]를 substring 한 문자열을… Read More »

java 8 의 컬렉션(Map, Set, List…)을 편리하게 순회하는 샘플코드 (forEach, replaceAll, filter, map…)

By | 3월 25, 2021

/* * 기본적인 루프 * – map.forEach() */ map.forEach((k, v) -> System.out.println("key: " + k + ", value: " + v)); map.forEach((k,v) -> { System.out.println("key: " + k + ", value: " + v) }); map.entrySet().forEach((e) -> System.out.println("key: " + e.getKey() + ", value: " + e.getValue())); map.keySet().forEach((k) -> System.out.println("key: " + k)); map.values().forEach((v) ->… Read More »

Java Map 내의 요소 정렬(sort)하는 코드 샘플

By | 9월 16, 2019

private Map<String, OwnerVO> getSortedMapByOwnerTotChgVol(Map<String, OwnerVO> ownerMap) { List<Map.Entry<String, OwnerVO>> sortList = new LinkedList<>(ownerMap.entrySet()); Collections.sort(sortList, new Comparator<Map.Entry<String, OwnerVO>>() { @Override public int compare(Entry<String, OwnerVO> o1, Entry<String, OwnerVO> o2) { return ((o1.getValue().getTotChgVol() – o2.getValue().getTotChgVol()) < 0 ? 1 : -1); } }); Map<String, OwnerVO> sortedMap = new LinkedHashMap<>(); Iterator<Map.Entry<String, OwnerVO>> iter = sortList.iterator(); while(iter.hasNext()) { Map.Entry<String, OwnerVO>… Read More »

[Java] 제네릭(Generic) 관련 소스 샘플

By | 8월 1, 2017

  /** * Fragment를 신규 생성하여 리턴한다. (동적 생성) * * – 추가기능으로 액션바의 타이틀을 arguments 에 넣어준다. * * @param clazz * @param <T> * @return */ public static <T extends BaseFragment> T newFragment(Class<T> clazz){ T ret = null; try { ret = clazz.newInstance(); } catch (java.lang.InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e)… Read More »

숫자 문자열의 앞에 붙는 0 (leading zero) 제거하기 (ex: "00001" => "1")

By | 6월 2, 2017

– 출처: https://stackoverflow.com/questions/2800739/how-to-remove-leading-zeros-from-alphanumeric-text – // 간단하게 하면 이렇게 s.replaceFirst(“^0+(?!$)”, “”); // 정규식 객체를 사용하면 이렇게 Pattern.compile(“^0+(?!$)”).matcher(s).replaceFirst(“”); * 참고: 이 방식은 “0000” 같은 문자열이 들어오면 마지막 0 하나는 남겨준다.   

Jackson 2 를 사용하여 json 을 이쁘게 출력하기 (beautifier, formatter)

By | 11월 24, 2016

(1) 심플한 방법 ObjectMapper mapper = new ObjectMapper(); String beautifiedJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(mapper.readValue(srcJson, LilnkedHashMap.class));   (2) (1) 을 수행했는데 마음에 들지 않을 경우, 사용자정의를 할 수 있는 포인트가 있다. (내 경우에는 indent가 tab이 아니라 space 2개로 되어 있는 것이 마음에 들지 않아서 적용해 보았다.)      

Java 에서 정규식(Regex)을 사용하여 substring 하기

By | 11월 19, 2016

담에 또 써먹을 일이 있을까 모르겠지만… 일단 끄적여 본다~   // 이 문자열에서 시간표시 이전만 남기고 제거하고 싶다. String msg = “블라블라블라블라 (09:01 13:57:14) 블라블라블라”; String msgSubStr = “”; // 잘라낸 결과 Pattern pattern = Pattern.compile(“\\(\\d\\d”); // 위 msg 문자열에서 “(09” 에 해당하는 정규식패턴 Matcher matcher = pattern.matcher(msg); int foundIdx = 0; if(matcher.find()){ foundIdx =… Read More »