Apache Commons
- 자바의 기본 라이브러리를 보완하는 다양한 기능들
- 무료 오픈소스 라이브러리
- 여러 하위 라이브러리들로 구성
- ⭐️ 여기서 보여주는 예시들은 극히 일부
Lang
// 첫 문자만 대문자로
var str1 = "hello world!";
var str2 = StringUtils.capitalize(str1);
// 대소문자 무관 포함 여부 확인
var str1HasHello = StringUtils
.containsAnyIgnoreCase(str2, "HELLO");
// 문자열에서 특정 부분 사이의 문자열만 뽑아내기
var str3 = "이 문장에서 <이것>만 뽑아보세요.";
var inBrackets = StringUtils
.substringBetween(str3, "<", ">");
// ⭐️ 문자열이 null일 경우 보다 안정적으로 처리
String str4 = null;
//var str5 = str4.trim(); // ⚠️ NullPointerException 발생
var str6 = StringUtils.trim(str4);
//var str7 = str4.isBlank(); // ⚠️ NullPointerException 발생
var str8 = StringUtils.isBlank(str4);
int[] arr1 = {1, 2, 3, 4, 5};
// 배열에 원소를 추가한 또 다른 배열을 반환
int[] arr2 = ArrayUtils.add(arr1, 8);
// 배열에 원소를 제거한 또 다른 배열을 반환
int[] arr3 = ArrayUtils.removeElement(arr2, 3);
// ⚠️ 매 번 새로운 배열 공간 차지 - 자주 사용된다면 리스트로
ArrayUtils.reverse(arr3);
Math
// 최대공약수와 최소공배수
var gcd_12_18 = ArithmeticUtils.gcd(12, 18);
var lcm_12_18 = ArithmeticUtils.lcm(6, 8);
// 행렬 연산
double[][] matrix1 = {{1, 2}, {3, 4}};
double[][] matrix2 = {{5, 6}, {7, 8}};
RealMatrix m1 = MatrixUtils.createRealMatrix(matrix1);
RealMatrix m2 = MatrixUtils.createRealMatrix(matrix2);
RealMatrix m1Xm2 = m1.multiply(m2);
// 통계 관련 기능
double[] values = {1.8, 2.4, 3.7, 4.3, 5.9};
DescriptiveStatistics stats = new DescriptiveStatistics(values);
double mean = stats.getMean();
double sum = stats.getSum();
double std = stats.getStandardDeviation();
// 🎓 이 외에도 다양한 수학 관련 고급 기능들 제공
Collections
// 💡 Bag : 중복 포함 가능, 개수 카운트
Bag<String> bag = new HashBag<>();
bag.add("아아");
bag.add("아아");
bag.add("뜨아");
bag.add("뜨아", 3); // n개씩 추가 가능
var iceAmericanos = bag.getCount("아아");
var hotAmericanos = bag.getCount("뜨아");
var inMyTimes = bag.getCount("라떼");
// 💡 MultiMap : key에 여러 value를 가질 수 있음
MultiMap<String, String> multiMap = new MultiValueMap<>();
multiMap.put("철수", "개근상");
multiMap.put("영희", "우수상");
multiMap.put("영희", "인기상");
multiMap.put("영희", "모범상");
multiMap.put("잡돌", "개진상");
var chulsooAwards = multiMap.get("철수");
var youngheeAwards = multiMap.get("영희");
var jabdolAwards = multiMap.get("잡돌");