programing

ArrayList를 정렬하는 방법

nasanasas 2020. 8. 29. 11:09
반응형

ArrayList를 정렬하는 방법 내림차순으로?


ArrayList<Long>Java에서 내림차순 으로 정렬하는 방법은 무엇입니까?


다음은 한 가지 방법입니다 list.

list.sort(null);
Collections.reverse(list);

또는 직접 구현하여 Comparator반대 단계를 정렬하고 제거 할 수 있습니다 .

list.sort((o1, o2) -> o2.compareTo(o1));

또는 Collections.reverseOrder()후진 중이므로 더 간단하게 사용하십시오 .

list.sort(Collections.reverseOrder());

Comparator<Long> comparator = Collections.reverseOrder();
Collections.sort(arrayList, comparator);

아래에 주어진 다음 코드를 사용할 수 있습니다.

Collections.sort(list, Collections.reverseOrder());

또는 사용자 정의 비교기를 사용하려는 경우 아래와 같이 사용할 수 있습니다.

Collections.sort(list, Collections.reverseOrder(new CustomComparator());

CustomComparator는 목록에있는 개체를 비교하는 비교기 클래스입니다.


자바 8

Java 8에서 잘하는 것은 훨씬 재미 있고 쉽습니다.

Collections.sort(variants,(a,b)->a.compareTo(b));
Collections.reverse(variants);

람다 표현이 여기에 락!

ab 를 비교 하기 위해 둘 이상의 라인 로직이 필요한 경우 다음 과 같이 작성할 수 있습니다.

Collections.sort(variants,(a,b)->{
    int result = a.compareTo(b);
    return result;
});

정상적으로 정렬하고 사용 Collections.reverse();


긴 값이 객체 어딘가에있는 람다의 경우 다음을 사용하는 것이 좋습니다.

.sorted((o1, o2) -> Long.compare(o1.getLong(), o2.getLong()))

또는 더 나은 :

.sorted(Comparator.comparingLong(MyObject::getLong))

정렬 한 다음 뒤집습니다.


아래와 같이 자체 Comparator를 구현하는보다 일반적인 접근 방식

Collections.sort(lst,new Comparator<Long>(){
                public int compare(Long o1, Long o2) {
                    return o2.compareTo(o1);
                }
            });

Collections.sort()내림차순을 제공하는 비교기와 함께 사용 합니다. Collections.sort에 대한 Javadoc을 참조하십시오 .


다음 접근 방식은 목록을 내림차순으로 정렬하고 ' null '값 도 처리합니다. null 값이있는 경우 Collections.sort ()에서 NullPointerException 을 throw합니다.

      Collections.sort(list, new Comparator<Long>() {
          public int compare(Long o1, Long o2) {
                  return o1==null?Integer.MAX_VALUE:o2==null?Integer.MIN_VALUE:o2.compareTo(o1);

        }
    });

당신은 또한을 정렬 할 수 있습니다 ArrayListTreeSet대신의 comparator. 다음은 정수 배열에 대한 이전 질문의 예입니다. .NET Framework의 자리 표시 자 이름으로 "숫자"를 사용하고 ArrayList있습니다.


     import.java.util.*;
        class MyClass{
        public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        ArrayList<Integer> numbers = new ArrayList<Integer>(); 

        TreeSet<Integer> ts = new TreeSet<Integer>(numbers);
        numbers = new ArrayList<Integer>(ts);
        System.out.println("\nThe numbers in ascending order are:");
        for(int i=0; i<numbers.size(); i++)
        System.out.print(numbers.get(i).intValue()+" ");
        System.out.println("\nThe numbers in descending order are:");
        for(int i=numbers.size()-1; i>=0; i--)
        System.out.print(numbers.get(i).intValue()+" ");
    }
}

So, There is something I would like to bring up which I think is important and I think that you should consider. runtime and memory. Say you have a list and want to sort it, well you can, there is a built in sort or you could develop your own. Then you say, want to reverse the list. That is the answer which is listed above.

If you are creating that list though, it might be good to use a different datastructure to store it and then just dump it into an array.

Heaps do just this. You filter in data, and it will handle everything, then you can pop everything off of the object and it would be sorted.

Another option would be to understand how maps work. A lot of times, a Map or HashMap as something things are called, have an underlying concept behind it.

For example.... you feed in a bunch of key-value pairs where the key is the long, and when you add all the elements, you can do: .keys and it would return to you a sorted list automatically.

It depends on how you process the data prior as to how i think you should continue with your sorting and subsequent reverses

참고URL : https://stackoverflow.com/questions/5894818/how-to-sort-arraylistlong-in-decreasing-order

반응형