logo

ArrayList를 정렬하는 Java 프로그램

ArrayList는 Collection 프레임워크에서 제공되는 클래스입니다. Java에서는 컬렉션 프레임워크가 java.util 패키지에 정의되어 있습니다. ArrayList는 요소를 동적으로 저장하는 데 사용됩니다. ArrayList에는 크기 제한이 없기 때문에 배열보다 유연합니다. ArrayList는 데이터를 순서 없이 저장합니다. 어떤 경우에는 데이터를 순서대로 재배열해야 합니다.

Java에는 두 가지 유형의 ArrayList가 있습니다. 하나는 Wrapper 클래스 객체의 ArrayList이고, 다른 하나는 사용자 정의 객체의 ArrayList입니다. 두 가지 유형의 ArrayList를 정렬하는 방법을 살펴보겠습니다. 첫 번째부터 시작하겠습니다.

  1. 래퍼 클래스 객체의 ArrayList 정렬.
    • 오름차순
    • 내림차순
  2. 사용자 정의 객체의 ArrayList 정렬.
    • 유사한
    • 비교기

유형 1: 래퍼 클래스 객체의 ArrayList 정렬



Wrapper 클래스 개체의 ArrayList는 문자열, 정수 등과 같은 개체의 ArrayList일 뿐입니다. ArrayList는 오름차순과 내림차순 두 가지 방법으로 정렬할 수 있습니다. 컬렉션 클래스는 ArrayList 정렬을 위한 두 가지 메서드를 제공합니다. sort() 및 reverseOrder()는 각각 오름차순 및 내림차순입니다.

1(A)오름차순

이 sort() 메소드는 목록 객체를 매개변수로 받아들이고 오름차순으로 정렬된 ArrayList를 반환합니다. sort() 메소드의 구문은 아래와 같습니다.

Collections.sort(objectOfArrayList);>

ArrayList의 모든 요소는 상호 비교 가능해야 합니다. 그렇지 않으면 오류가 발생합니다. 클래스캐스트예외 . 여기서 상호 비교 가능이란 목록의 모든 항목이 동일한 데이터 유형을 갖는 것을 의미합니다.

ArrayList list = new ArrayList(); list.add(132); list.add(321); list.add('India');>

위의 예에서 목록에는 세 개의 요소가 있으며 그 중 두 요소는 Integer 유형이고 하나는 String 유형입니다. Integer에 있는 두 요소는 서로 비교할 수 있지만 String 유형의 요소는 다른 두 요소와 비교할 수 없습니다. 이 경우 ClassCastException이 발생합니다. 따라서 목록에는 동일한 유형의 요소가 있어야 합니다.

정렬을 이해하기 위해 다음 예를 살펴보겠습니다.

자바




// Java Program to Sort an ArrayList> // import java.util package> import> java.util.*;> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Define an objects of ArrayList class> >ArrayList list =>new> ArrayList();> >// Adding elements to the ArrayList> >list.add(>'India'>);> >list.add(>'Pakistan'>);> >list.add(>'Srilanka'>);> >list.add(>'USA'>);> >list.add(>'Australia'>);> >list.add(>'Japan'>);> >// Printing the unsorted ArrayList> >System.out.println(>'Before Sorting : '> + list);> >// Sorting ArrayList in ascending Order> >Collections.sort(list);> >// printing the sorted ArrayList> >System.out.println(>'After Sorting : '> + list);> >}> }>

>

>

산출:

Before Sorting : [India, Pakistan, Srilanka, USA, Australia, Japan] After Sorting : [Australia, India, Japan, Pakistan, Srilanka, USA]>

1(B) 내림차순

ArrayList를 내림차순으로 정렬하려면 다음을 사용합니다. 역순으로() sort() 메서드의 인수로 메서드를 사용합니다. reverseOrder() 메서드를 직접 호출할 수는 없습니다. 이 메소드는 두 개의 매개변수를 사용합니다. 하나는 ArrayList의 객체이고 두 번째 매개변수는 Collections.reversOrder() 메소드입니다. 이 메소드는 내림차순으로 ArrayList를 반환합니다. sort() 메서드와 유사하게 ArrayList는 상호 비교 가능해야 합니다. 그렇지 않으면 오류가 발생합니다. 클래스캐스트예외 .

Collections.sort(objectOfArrayList, Collections.reverseOrder());>

여기서 이 방법은 먼저 항목을 오름차순으로 정렬한 다음 정렬된 항목의 순서를 반대로 합니다.

자바




// Java Program to Sort an ArrayList> // Importing generic java files> import> java.util.*;> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Define an objects of ArrayList class> >ArrayList list =>new> ArrayList();> >// Adding elements to the ArrayList> >list.add(>410>);> >list.add(>250>);> >list.add(>144>);> >list.add(>967>);> >list.add(>289>);> >list.add(>315>);> >// Printing the unsorted ArrayList> >System.out.println(>'Before Sorting : '> + list);> >// Sorting ArrayList in descending Order> >Collections.sort(list, Collections.reverseOrder());> >// Printing the sorted ArrayList> >System.out.println(>'After Sorting : '> + list);> >}> }>

>

>

산출:

Before Sorting : [410, 250, 144, 967, 289, 315] After Sorting : [967, 410, 315, 289, 250, 144]>

2. 사용자 정의 객체의 ArrayList 정렬

사용자 정의 객체의 ArrayList는 사용자 정의 객체의 ArrayL.ist일 뿐입니다. Java에는 컬렉션 요소를 정렬하는 데 사용할 수 있는 두 가지 인터페이스가 있습니다. 비교 가능 및 비교기.

2(A) 비교 가능

Comparable은 단일 정렬 순서를 제공합니다. Comparable을 사용하면 원래 클래스에 영향을 미칩니다. 비교 가능한 인터페이스 제공 비교 대상() 요소를 정렬하는 방법. Java에서는 java.lang 패키지에서 비교 기능을 제공합니다. 다음을 호출하여 ArrayList를 정렬할 수 있습니다. Collections.sort(List) 메서드 .

예: 정렬은 재고 차량 수를 기준으로 이루어집니다.

자바




// Java Program to Sort an ArrayList> // Importing generic java files> import> java.util.*;> // Implements comparable interface into custom class> class> Car>implements> Comparable {> >int> ModalNo;> >String name;> >int> stock;> >// Parameterized constructor of the class> >Car(>int> ModalNo, String name,>int> stock)> >{> >this>.ModalNo = ModalNo;> >this>.name = name;> >this>.stock = stock;> >}> >// Override the compareTo method> >public> int> compareTo(Car car)> >{> >if> (stock == car.stock)> >return> 0>;> >else> if> (stock>자동차.재고)> >return> 1>;> >else> >return> ->1>;> >}> }> // Main driver method> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Create the ArrayList object> >ArrayList c =>new> ArrayList();> >c.add(>new> Car(>2018>,>'Kia'>,>20>));> >c.add(>new> Car(>2020>,>'MG'>,>13>));> >c.add(>new> Car(>2013>,>'creta'>,>10>));> >c.add(>new> Car(>2015>,>'BMW'>,>50>));> >c.add(>new> Car(>2017>,>'Audi'>,>45>));> >// Call the sort function> >Collections.sort(c);> >// Iterate over ArrayList using for each loop> >for> (Car car : c) {> >// Print the sorted ArrayList> >System.out.println(car.ModalNo +>' '> + car.name> >+>' '> + car.stock);> >}> >}> }>

>

>

산출:

2013 creta 10 2020 MG 13 2018 Kia 20 2017 Audi 45 2015 BMW 50>

2(B) 비교기

비교기는 여러 정렬 순서를 제공합니다. 비교기는 원래 클래스에 영향을 미치지 않습니다. 비교기는 다음을 제공합니다. 비교하다() 요소를 정렬하는 방법. Java에서는 java.util 패키지에서 비교 기능을 제공합니다. Collections.sort(List, Comparator) 메소드를 호출하여 ArrayList를 정렬할 수 있습니다. 한 가지 예를 들어보겠습니다.

자바




// Java Program to Sort an ArrayList> // Step 1: ImportingDB files> import> java.util.*;> // Class 1: Parent Class> class> Car {> >int> ModalNo;> >String name;> >int> stock;> >// Parameterized constructor> >Car(>int> ModalNo, String name,>int> stock)> >{> >this>.ModalNo = ModalNo;> >this>.name = name;> >this>.stock = stock;> >}> }> // Class 2: Child class> // creates the comparator for comparing stock value> class> StockComparator>implements> Comparator {> >// Function to compare> >public> int> compare(Car c1, Car c2)> >{> >if> (c1.stock == c2.stock)> >return> 0>;> >else> if> (c1.stock>c2.주식)> >return> 1>;> >else> >return> ->1>;> >}> }> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Create the ArrayList object> >ArrayList c =>new> ArrayList();> >c.add(>new> Car(>2018>,>'Kia'>,>20>));> >c.add(>new> Car(>2020>,>'MG'>,>13>));> >c.add(>new> Car(>2013>,>'creta'>,>10>));> >c.add(>new> Car(>2015>,>'BMW'>,>50>));> >c.add(>new> Car(>2017>,>'Audi'>,>45>));> >// Call the sort function> >Collections.sort(c,>new> StockComparator());> >// For each loop to iterate> >for> (Car car : c) {> > >// Print the sorted ArrayList> >System.out.println(car.stock +>' '> + car.name> >+>' '> + car.ModalNo);> >}> >}> }>

'prim'의 알고리즘'

>

>

산출:

10 creta 2013 13 MG 2020 20 Kia 2018 45 Audi 2017 50 BMW 2015>