2021.11.07 - [실전 공부/Java] - [JAVA]구분자 없는 문자열을 배열로 변환
요즘 자주 사용한 메서드
1. 증가율 구하기
private double getScoreGrowthRate(double firstScore, double secondScore, int round) {
double result = 0;
if (firstScore > 0) {
result = (((secondScore - firstScore) / firstScore) * 100);
} else {
result = secondScore * 100;
}
if (result > 0) {
result = Double.valueOf(String.format("%." + round + "f", result));
} else {
result = 0;
}
return result;
}
- round를 파라미터로 받아 소숫점 몇자리까지 받을건지 정할 수 있도록 구현
2. 백분율 (퍼센트) 구하기
private double getPercentage(double score, double total, int round) {
double result = 0;
if (score > 0) {
result = (score / total) * 100;
return Double.valueOf(String.format("%." + round + "f", result));
}
return result;
}
- round를 파라미터로 받아 소숫점 몇자리까지 받을건지 정할 수 있도록 구현
3. Set을 List로 변환하기
private List<String> setToList(HashSet<String> tmpSet) {
List<String> returnList = new ArrayList<>();
Iterator<String> iter = tmpSet.iterator();
while (iter.hasNext()) {
returnList.add(iter.next());
}
return returnList;
}
- 이렇게 직접 구현해서 사용했더니 그냥 선언 할때 인자로 넘겨주면 된다더라
- Set to List와 List to Set 모두 동일
HashSet<String> set = new HashSet<>() {
{
add("테스트");
add("테스트2");
add("테스트3");
add("테스트4");
}
};
long beforeTime = System.currentTimeMillis();
System.out.println("이전 : " + beforeTime);
//List<String> list = setToList(set);
List<String> list = new ArrayList<>(set);
long afterTime = System.currentTimeMillis();
System.out.println("이후 : " + afterTime);
System.out.println("시간차이 : " + (afterTime - beforeTime));
직접 구현한 메서드
이전 : 1636866552359
이후 : 1636866552376
시간차이 : 17
초기화 할때 인자로 넘기는 방법
이전 : 1636866665249
이후 : 1636866665260
시간차이 : 11
이건 그냥 인자로 넘기는게 나은것 같다.
4. String List를 Integer List로 변환하기
private List<Integer> stringArrToIntegerArr(List<String> strList) {
List<Integer> intList = new ArrayList<Integer>();
for (int i = 0; i < strList.size(); i++) {
intList.add(Integer.parseInt(strList.get(i)));
}
return intList;
}
List<String> stringList = new ArrayList<>(){{
add("1");
add("2");
add("3");
add("4");
}};
long beforeTime = System.currentTimeMillis();
System.out.println("이전 : " + beforeTime);
List<Integer> intList = stringList.stream().map(Integer::parseInt).collect(Collectors.toList());
//List<Integer> intList = stringArrToIntegerArr(stringList);
long afterTime = System.currentTimeMillis();
System.out.println("이후 : " + afterTime);
System.out.println("시간차이 : " + (afterTime - beforeTime));
for(Integer i : intList){
System.out.println(i);
}
직접 구현한 메서드
이전 : 1636867122726이후 : 1636867122737시간차이 : 11
stream을 이용한 방법
이전 : 1636867182278이후 : 1636867182291시간차이 : 13
이건 직접 구현한 방식이 조금 더 나은 것 같다.
반응형
'공부 기록' 카테고리의 다른 글
[AWS_DB] AWS EC2에 올린 Docker Container DB에 DB 툴로 접속하기 (0) | 2021.12.04 |
---|---|
[Docker] 도커 빌드 및 실행 자동화 스크립트 (0) | 2021.12.02 |
[JAVA]구분자 없는 문자열을 배열로 변환 (0) | 2021.11.07 |
MYSQL에서의 조건문 (CASE- WHEN/ EXISTS/ IFNULL) (0) | 2021.10.31 |
[REACT] 리액트에서 특정 문자 전부 변경 및 개행 추가하기 (0) | 2021.10.24 |
댓글