arraylistjava排序
⑴ 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()); } } }
⑵ java arraylist 按照對象的屬性排序
List中的元素是對象的話,若要按該List中元素的某個屬性進行排序,那麼應該重寫裡面元素的hashCode和equals方法,然後再排序。比如該問題要重寫course的hashCode和equals方法
⑶ 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 如何使用 Comparator排序
用Comparator是策略模式(strategy design pattern),就是不改變對象自身,而用一個策略對象(strategy object)來改變它的行為。
比如:你想對整數採用絕對大小來排序,Integer是不符合要求的,你不需要去修改Integer類(實際上你也不能這么做)去改變它的排序行為,只要使用一個實現了Comparator介面的對象來實現控制它的排序就行了。
示例代碼如下:
//AbsComparator.java
import java.util.*;
public class AbsComparator implements Comparator {
public int compare(Object o1, Object o2) {
int v1 = Math.abs(((Integer)o1).intValue());
int v2 = Math.abs(((Integer)o2).intValue());
return v1 > v2 ? 1 : (v1 == v2 ? 0 : -1);
}
}
//Test.java
import java.util.*;
public class Test {
public static void main(String[] args) {
//產生一個20個隨機整數的數組(有正有負)
Random rnd = new Random();
Integer[] integers = new Integer[20];
for(int i = 0; i < integers.length; i++)
integers[i] = new Integer(rnd.nextInt(100) * (rnd.nextBoolean() ? 1 : -1));
System.out.println("用Integer內置方法排序:");
Arrays.sort(integers);
System.out.println(Arrays.asList(integers));
System.out.println("用AbsComparator排序:");
Arrays.sort(integers, new AbsComparator());
System.out.println(Arrays.asList(integers));
}
}
⑸ 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集合中的指定列排序
ArrayList
就是一個可以改變大小的一維數組.當然
你可以往ArrayList里放ArrayList或者其它的容器什麼的那就用標準的排序方法就行了
用容量類就用Collections.sort
數組就用Arrays.sort
還有什麼不清楚直接m我
網路知道最近抽風了
不能回答追問
⑺ 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 降序排序問題
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));
}
}