Nasıl bir sıralamak için ArrayList<Long>azalan sırada Java?
Yanıtlar:
İşte sizin için bir yol list:
list.sort(null);
Collections.reverse(list);
Veya Comparatorters adımı sıralamak ve ortadan kaldırmak için kendinizinkini uygulayabilirsiniz :
list.sort((o1, o2) -> o2.compareTo(o1));
Veya daha da basitçe şunu kullanın, Collections.reverseOrder()çünkü yalnızca ters çeviriyorsunuz
list.sort(Collections.reverseOrder());
o2.compareTo(o1)burada olması gerekse de :)
list.sort((o1, o2) -> o2.compareTo(o1))
Comparator<Long> comparator = Collections.reverseOrder();
Collections.sort(arrayList, comparator);
Aşağıda verilen aşağıdaki kodu kullanabilirsiniz;
Collections.sort(list, Collections.reverseOrder());
veya özel karşılaştırıcı kullanacaksanız, aşağıda verildiği gibi kullanabilirsiniz.
Collections.sort(list, Collections.reverseOrder(new CustomComparator());
CustomComparator, listede bulunan nesneyi karşılaştıran bir karşılaştırıcı sınıftır.
bunu java 8'de iyi yapmak çok eğlenceli ve kolay
Collections.sort(variants,(a,b)->a.compareTo(b));
Collections.reverse(variants);
Lambda ifadeleri burada harika !!!
a ve b'yi karşılaştırmak için birden fazla satır mantığına ihtiyacınız varsa, bunu şöyle yazabilirsiniz
Collections.sort(variants,(a,b)->{
int result = a.compareTo(b);
return result;
});
Normal olarak sıralayın ve kullanın Collections.reverse();
Sıralayın, sonra tersine çevirin.
Aşağıdaki gibi kendi Karşılaştırıcımızı uygulamak için daha genel bir yaklaşım
Collections.sort(lst,new Comparator<Long>(){
public int compare(Long o1, Long o2) {
return o2.compareTo(o1);
}
});
Collections.sort()Azalan sırayı sağlayan bir karşılaştırıcı ile kullanarak . Collections.sort için Javadoc'a bakın .
Aşağıdaki yaklaşım, listeyi azalan sırada sıralayacak ve aynı zamanda ' boş ' değerleri de işleyecektir , sadece herhangi bir boş değeriniz varsa, Collections.sort () NullPointerException atacaktır.
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);
}
});
Ayrıca ArrayList, bir TreeSetyerine a ile sıralayabilirsiniz comparator. İşte daha önce bir tamsayı dizisi için sorduğum bir sorudan bir örnek. İçin yer tutucu adı olarak "sayılar" kullanıyorum 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()+" ");
}
}
Yani, önemli olduğunu düşündüğüm ve düşünmeniz gereken bir konu var. çalışma zamanı ve bellek. Diyelim ki bir listeniz var ve onu sıralamak istiyorsunuz, peki yapabilirsin, yerleşik bir sıralama vardır veya kendi listenizi geliştirebilirsiniz. Sonra listeyi tersine çevirmek istiyorum diyorsunuz. Yukarıda listelenen cevap budur.
Yine de bu listeyi oluşturuyorsanız, depolamak için farklı bir veri yapısı kullanmak ve ardından onu bir diziye dökmek iyi olabilir.
Yığınlar bunu yapar. Verileri filtrelersiniz ve her şeyi halleder, sonra her şeyi nesneden çıkarabilir ve sıralanacaktır.
Diğer bir seçenek de haritaların nasıl çalıştığını anlamak olabilir. Çoğu zaman, bir Harita veya HashMap, bir şey olarak adlandırılır, arkasında bir kavram vardır.
Örneğin .... anahtarın uzun olduğu bir grup anahtar-değer çiftini beslersiniz ve tüm öğeleri eklediğinizde şunları yapabilirsiniz: .keysve size otomatik olarak sıralı bir liste geri döner.
Sıralama ve sonraki ters işlemlere nasıl devam etmeniz gerektiğini düşündüğümden önce verileri nasıl işlediğinize bağlıdır.
kullanılması List.sort()veComparator.comparingLong()
numberList.sort(Comparator.comparingLong(x -> -x));
l1 > l2 ? -1 : l1 == l2 ? 0 : 1bu kod saçma.o1.compareTo(o2)O zaman kullan .