2024. 4. 4. 22:11ㆍLanguages/JAVA

회사에서 코드를 만들어보다가, (숫자로 변환할 수 있는)문자열을 요소로 가지는 배열을 이용하게 되었는데요. 해당 String[]의 요소 중 최대값을 구하는 방법을 고민하게 되었습니다.
Http 통신에서 Content-type이 application/json 형태가 엄청 많았습니다. 이렇게 JSON으로 데이터를 주고 받을 때, String[]로 전달될 때가 있었고 아래와 같은 방법을 고민하게 되었습니다.
그래서 고민하던 3가지 방법을 작성해보려고 합니다.
String[] testStr = new String[] {"1","2","3"};
1. Collections 활용
List<Integer> listTest = new ArrayList<>();
for(String str : testStr){
listTest.add(Integer.parseInt(str));
}
int max = Collections.max(listTest);
1) 배열 내 요소를 담을 수 있는 Integer 형을 가진 List 컬렉션을 만들어줍니다.
2) testStr에서 각 요소들을 추출하여 Int형으로 parsing한 뒤, list에 추가해줍니다.
3) 이후 Collections.max()를 이용하여 제일 큰 수를 추출합니다.
2. Arrays 활용
int[] tmp = new int[testStr.length];
for(int i = 0; i < testStr.length; i++){
tmp[i] = Integer.parseInt(teststr[i]);
}
int max = Arrays.stream(tmp).max().getAsInt();
1) testStr의 길이와 동일한 int형 타입을 요소로 가지는 배열을 만들어줍니다.
2) testStr에서 각 요소들을 추출하여 Int형으로 parsing한 뒤, 배열에 추가해줍니다.
3) 이후 Arrays.stream().max().getAsInt() 통해 최대값을 구합니다.
3. Arrays 활용 (getAsInt())
int max = Arrays.stream(testStr).mapToInt(Integer::parseInt).max().getAsInt();
2.와 차이점이 있는데, String[] testStr을 int[]이나 컬렉션(List)으로 바꾸는 것이 아니라는 점입니다. 직접 stream을 이용해 진행되었는데, 중간연산자로 mapToInt를 이용하여 parsing해주는 방법입니다. 최종 연산자로 getAsInt()를 이용했습니다.
'Languages > JAVA' 카테고리의 다른 글
| [JAVA] Stream++ (1) | 2024.10.05 |
|---|---|
| [JAVA] Optional (2) | 2024.09.08 |
| [JAVA] 간단한 Predicate<T> (0) | 2024.03.31 |
| [JAVA] Stream (0) | 2024.01.24 |
| [JAVA] 입출력 스트림 (0) | 2023.05.30 |