[Java] 다중 (Array)List 길이로 정렬하는 방법

2022-10-06


Photo by Surface on Unsplash


1. 방법

 

[[1, 2, 3], [2, 1], [1, 2, 4, 3], [2]]  이와 같은 이중 배열이 있다고 가정해보자.  이를 내부의 배열의 길이의 순서대로 정렬하면, [[2], [2, 1], [1, 2, 3], [1, 2, 4, 3]] 이런 모양이 나올 것이다. 방법을 알아보자.

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
    
    @Test
	public void test17() {
		//오름차순 정렬
		Comparator<List<String>> c = new Comparator<List<String>>() {
			public int compare(List<String> s1, List<String> s2) {
				return Integer.compare(s1.size(), s2.size());
				//내림차순일 경우 return Integer.compare(s2.size(), s1.size());
			}
		};
		
		List<List<String>> list = new ArrayList<>();
		List<String> innerList = new ArrayList<>();
		
		/**
		 * 
		 * 
		 * 	list.add(innerList) . . . .
		 * 
		 *  [[1, 2, 3], [2, 1], [1, 2, 4, 3], [2]]  형태의 배열을 넣는 로직
		 * 
		 * 
		 */
		
		
		Collections.sort(list, c); // 배열 오름 차순 정렬
		
	}

 

 

방법은 Comparator 구현체를 이용해 외부 list 안에 있는 각 innerlist 들의 길이를 비교해 정렬을 하는 방법을 사용하면 된다.

 

 


메인 이미지 출처 : Photo by Surface on Unsplash