java對arraylist排序
Ⅰ java ArrayList 降序排序問題
public static void main(String[] args) {
ArrayList<Integer> arr=new ArrayList<>();
arr.add(89);
arr.add(78);
arr.add(56);
arr.add(92);
arr.add(76);
//升序排列;
Collections.sort(arr);
//逆序輸出
Collections.reverse(arr);
for(int i=0;i<arr.size();i++){
//這就是你要的效果
System.out.println("0"+i+" "+arr.get(i));
}
}
Ⅱ java arraylist 按照對象的屬性排序
List中的元素是對象的話,若要按該List中元素的某個屬性進行排序,那麼應該重寫裡面元素的hashCode和equals方法,然後再排序。比如該問題要重寫course的hashCode和equals方法
Ⅲ java如何對Arraylist數組進行排序(用comparable)
看代碼:
importjava.util.ArrayList;
importjava.util.Arrays;
importjava.util.Collections;
publicclassDemo{
publicstaticvoidmain(String[]args)throwsException{
Pair[]pairs={
newPair(0,1),
newPair(2,9),
newPair(7,0),
newPair(8,8),
newPair(8,6),
newPair(9,2),
newPair(1,5),
newPair(8,2),
newPair(9,15),
newPair(9,5)
};
ArrayList<Pair>pairList=newArrayList<>(Arrays.asList(pairs));
System.out.println("排序前:");
System.out.println(Arrays.toString(pairs));
Arrays.sort(pairs);//對數組排序
System.out.println("排序後:");
System.out.println(Arrays.toString(pairs));
System.out.println("排序前:");
System.out.println(pairList);
Collections.sort(pairList);//對ArrayList排序
System.out.println("排序後:");
System.out.println(pairList);
}
}
//繼承Comparable介面排序該類是「可排序的」
//<>裡面的是排序時與當前實例進行比較的實例的類型
//一般都和當前實例是同一個類型,比如這里就是Pair的實例和Pair的實例比較
classPairimplementsComparable<Pair>{
publicintleft;
publicintright;
publicPair(intleft,intright){
this.left=left;
this.right=right;
}
@Override
publicStringtoString(){
return"["+left+","+right+"]";
}
//排序規則,先按left排序,再按right排序
@Override
publicintcompareTo(Pairthat){
if(this.left>that.left){
return1;
}elseif(this.left<that.left){
return-1;
}elseif(this.right>that.right){
return1;
}elseif(this.right<that.right){
return-1;
}
return0;
}
}
可以發現先按 left 排序,如果 left 相等,則按 right 排序
Ⅳ java如何對ArrayList中對象按照該對象某屬性排序
if(!s1.name.equals(s2.name)){ return s2.name.compareTo(s1.name);}else{//姓名也相同則按學號排序 return s2.id-s1.id;}}}};Student stu1 = new Student (1,"zhangsan","male",28,"cs"); Student stu2 = new Student (2,"lisi","female",19,"cs"); Student stu3 = new Student (3,"wangwu","male",22,"cs"); Student stu4 = new Student (4,"zhaoliu","female",17,"cs"); Student stu5 = new Student (5,"jiaoming","male",22,"cs"); ArrayList<Student> List = new ArrayList<Student>(); List.add(stu1); List.add(stu2); List.add(stu3); List.add(stu4); List.add(stu5); //這里就會自動根據規則進行排序 Collections.sort(List,comparator); display(List);} static void display(ArrayList<Student> lst){ for(Student s:lst) System.out.println(s);}} class Student{int age;int id;String gender; String name;String cs;Student(int id,String name,String gender,int age,String cs){ this.age=age; this.name=name; this.gender=gender; this.id=id; return id+" "+name+" "+gender+" "+age+" "+cs;}} 2.添加 Comparable 介面,重寫 compareTo 方法。然後你可以用 TreeSet 結構進行排序。它會自動排序。
Ⅳ Java中怎樣對ArrayList集合中的指定列排序
ArrayList
就是一個可以改變大小的一維數組.當然
你可以往ArrayList里放ArrayList或者其它的容器什麼的那就用標準的排序方法就行了
用容量類就用Collections.sort
數組就用Arrays.sort
還有什麼不清楚直接m我
網路知道最近抽風了
不能回答追問
Ⅵ java ArrayList排序底層是怎麼實現的
list是一個集合,可以存入很多種對象類型。如果你存入的都是自定義類,怎麼能排序呢。如果你用泛型存入字元串或是數字等,排序就是按照int
string這些類型進行排序,排序方法也有很多種比較法
冒泡法等。如果你想了解排序可以網上看一下各種排序的演算法,自己體會下優缺點。
Ⅶ java arraylist 集合排序問題
你可以使用Collections 提供的sort方法對ArrayList進行排序,sort方法提供了一個Comparator介面類型的參數,這個參數中可以自定義排序規則
你可以自定義一個類實現Comparator介面,在裡面編寫你需要的排序規則,然後通過以下方式排序ArrayList
Collections.sort(arraylist,自定義排序規則對象);
sort
public static <T> void sort(List<T> list,
Comparator<? super T> c)
根據指定比較器產生的順序對指定列表進行排序。此列表內的所有元素都必須可使用指定比較器相互比較(也就是說,對於列表中的任意
e1 和 e2 元素,c.compare(e1, e2) 不得拋出
ClassCastException)。
此排序被保證是穩定的:不會因調用 sort 而對相等的元素進行重新排序。
排序演算法是一個經過修改的合並排序演算法(其中,如果低子列表中的最高元素小於高子列表中的最低元素,則忽略合並)。此演算法提供可保證的 n log(n) 性能。
指定列表必須是可修改的,但不必是可大小調整的。此實現將指定列表轉儲到一個數組中,並對數組進行排序,在重置數組中相應位置每個元素的列表上進行迭代。這避免了由於試圖原地對鏈接列表進行排序而產生的
n2 log(n) 性能。
參數:
list - 要排序的列表。
c - 確定列表順序的比較器。null 值指示應該使用元素的自然順序。
拋出:
ClassCastException -
如果列表中包含不可使用指定比較器相互比較 的元素。
UnsupportedOperationException
- 如果指定列表的列表迭代器不支持 set 操作。
另請參見:
Comparator
java.util
介面 Comparator<T>
類型參數:
T - 此 Comparator 可以比較的對象類型
Ⅷ Java中的ArrayList怎麼進行冒泡排序
java中的ArrayList進行冒泡排序,主要是循環遍歷取出數據,然後進行比較排序,如下代碼:
packagecom.qiu.lin.he;
importjava.util.ArrayList;
publicclassCeshi{
publicstaticvoidmain(String[]args){
ArrayList<Integer>list=newArrayList<Integer>();
list.add(76);
list.add(4);
list.add(786);
list.add(43);
list.add(21);
list.add(432);
list.add(10);
for(inti=0;i<list.size()-1;i++){
for(intj=1;j<list.size()-i;j++){
Integera;
if(list.get(j-1).compareTo(list.get(j))>0){//比較兩個整數的大小
a=list.get(j-1);
list.set((j-1),list.get(j));
list.set(j,a);//交換數據
}
}
}
for(Integers:list){
System.out.println(s.intValue());//輸出arraylist的數據
}
}
}
運行結果如下:
Ⅸ java 實現ArrayList的sort
java中可以使用Sort方法,可以對集合中的元素進行排序。Sort有三種重載方法,聲明代碼如下所示。
public void Sort();
//使用集合元素的比較方式進行排序
public void Sort(IComparer comparer);
//使用自定義比較器進行排序
public void Sort(int index, int count, IComparer comparer)
//使用自定義比較器進行指定范圍的排序
注意:為使用Sort方法進行排序,集合中的所有元素必須實現IComparable介面,否則,將拋出異常。
這里介紹使用第一種方法進行簡單的排序實例
using System;
using System.Collections;
class Program{
static void Main(string[] args)
{
ArrayList al = new ArrayList();
al.AddRange(new string[8] { "Array1", "Array2", "Array3", "Array5", "Array4", "Array8", "Array7", "Array6" });
al.Sort();
foreach (string s in al)
{
Console.WriteLine(s);
}
Console.ReadLine();
}
}
Ⅹ java ArrayList 排序
package com.test; public class BookBean { private String no; private String name; private String date; public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNo() { return no; } public void setNo(String no) { this.no = no; } } 以上為使用的BookBean ------------------------------------------ 下面是排序使用的 比較器 package com.test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Comparator; public class MyComparator implements Comparator<BookBean> { public int compare(BookBean book1, BookBean book2) { DateFormat df =new SimpleDateFormat("yyyyMMdd"); try { return df.parse(book1.getDate()).compareTo(df.parse(book2.getDate())); } catch (ParseException e) { return 0; } } } -------------------------------------------------------- 下面是測試: import java.util.Collections; import java.util.List; public class TestSort { public static void main(String[] args) { List<BookBean> list = new ArrayList<BookBean>(); for(int i=9;i>0;i--){ BookBean bb = new BookBean(); bb.setDate("2009030"+i); bb.setNo("0"+i); bb.setName("name"+i); System.out.println(bb.getDate()); list.add(bb); } Collections.sort(list,new MyComparator()); System.out.println("after sort:(ASC)"); for(int i=0;i<list.size();i++){ System.out.println(list.get(i).getDate()); } } }