[Java] List 데이터 저장 역순 (reverse)
- 프로그램언어/자바(Java)
- 2022. 4. 27.
Java에서 List 데이터의 값으로 오름차순을 하거나 내림차순을 하는 방법은 최하단 포스팅을 확인하시면 되며, 여기서는 데이터를 저장한 순서를 뒤집는 방법을 설명해보고자 합니다.
데이터 세팅
public static void main(String[] args) {
String[] arrs = {"삼성전자","테슬라","비트코인","펄어비스","코카콜라"};
List<String> list = new ArrayList<>(Arrays.asList(arrs));
System.out.println("리버스 이전 리스트 -> " + list.toString());
}
# 리버스 이전 리스트 -> [삼성전자, 테슬라, 비트코인, 펄어비스, 코카콜라]
오늘은 주식이 우울한 관계로 떡상하자는 마음에 주식 종목들과 암호화폐 종목을 리스트 형으로 받아봤습니다.
반복문 및 신규 리스트를 사용하여 뒤집기
/**
* 신규 리스트를 만들어서 뒤집기
*
* @param list
* @return
*/
public static void reverseList1(List<String> list) {
List<String> rtnList = new ArrayList<> ();
for(int i = list.size()-1; i >= 0; i--) rtnList.add(list.get(i));
System.out.println("리버스 이후 리스트 -> " + rtnList);
}
# 리버스 이후 리스트 -> [코카콜라, 펄어비스, 비트코인, 테슬라, 삼성전자]
우선 가장 기초적인 현재의 리스트를 반복문으로 뒤에서 앞으로 호출하여 신규 리스트에 담는 방식으로, 로직이 깔끔하나 신규 리스트를 생성해야 하는 불편함이 있습니다.
/**
* 신규 리스트를 만들어서 뒤집기
*
* @param list
* @return
*/
public static void reverseList1(List<String> list) {
List<String> rtnList = new ArrayList<> ();
for(int i = list.size()-1; i >= 0; i--) rtnList.add(list.get(i));
list = rtnList;
System.out.println("리버스 이후 리스트 -> " + list);
}
리버스 이후 리스트 -> [코카콜라, 펄어비스, 비트코인, 테슬라, 삼성전자]
위 내용은 temp list(rtnList)를 만들어서 우선 temp list에 세팅을 한 후, list에 대입하는 방식입니다. 신규 리스트를 받기 싫은 경우 이러한 방식을 사용하셔도 됩니다. 신규 리스트를 만들어서 값을 세팅하는 방법의 단점은 거대한 데이터의 경우 garbage collection이 발동될 수 있다는 문제가 있습니다.
반복문 및 기존 리스트를 변경하여 뒤집기
/**
* 중간을 기반으로 뒤집기
*
* @param list
*/
public static void reverseList2(List<String> list) {
for(int i = 0; i < list.size()/2; i++) {
String tempStr = list.get(i);
list.set(i, list.get(list.size()-i-1));
list.set(list.size()-i-1, tempStr);
}
System.out.println("리버스 이후 리스트 -> " + list);
}
# 리버스 이후 리스트 -> [코카콜라, 펄어비스, 비트코인, 테슬라, 삼성전자]
위에 있는 list보다 좀 더 복잡한 방식으로 리스트의 중간을 기점으로 끝을 서로 교환하는 방식입니다. 위 로직이 이해가 안된다면, 아래의 그림을 생각하면 좀 쉬워집니다.
Collections를 사용하여 뒤집기
Collections.reverse(list);
System.out.println("리버스 이후 리스트 -> " + list);
# 리버스 이후 리스트 -> [코카콜라, 펄어비스, 비트코인, 테슬라, 삼성전자]
마지막으로 가장 깔끔하고, 권장하는 방식으로 Collections의 메소드인 reverse를 사용하는 방식입니다. 다른 문제가 없다면 List나 Set 등은 Collections으로 핸들링하는 것이 가장 쉽고 유지보수성에서 유리합니다.
데이터의 값(ex: 가나다순)을 정렬하고 싶은 경우 아래의 포스팅을 보면 됩니다.
'프로그램언어 > 자바(Java)' 카테고리의 다른 글
[Java] OracleJDK 21, 설치 및 세팅하기 (OpenJDK 비교 및 라이센스) (1) | 2024.01.22 |
---|---|
[Java] 자바로 파일 복사하는 3가지 방법 (0) | 2022.04.29 |
[Java] 하위 폴더 및 파일 삭제 (재귀 함수 포함) (0) | 2022.04.10 |
[Java] Http URL File download 3가지 방법 (0) | 2021.12.29 |
[Lombok] 롬복 사용하기 (0) | 2021.06.21 |