導航:首頁 > 編程語言 > sortlistjava

sortlistjava

發布時間:2023-10-15 00:13:12

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中快速排序的演算法舉個例子

package person.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;

/**
* class name: RapidSort
* description: Java快速排序法:數組和集合
* @author Jr
*
*/
public class RapidSort {
private Random ran = new Random(); // 聲明一個全局變數ran,用來隨機生成整數

/**
* method name: sortArray
* description: 對數組的快速排序,只能用於int[]類型的數組
* @return
*/
private void sortArray() {
int[] array = new int[10]; // 聲明數組長度為10
for (int i = 0 ; i < array.length; i++) {
array[i] = ran.nextInt(10) + 1; // 數組賦值
}
Arrays.sort(array);
System.out.println(Arrays.toString(array));
}

/**
* method name: sortList
* description: 對集合的快速排序,可以用於List<Object>類型數組,
* 隱含意思就是對所有類型數組都適用
* @return
*/
private void sortList() {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0 ; i < 10; i++) {
list.add(ran.nextInt(10) + 1); // 給集合賦10個值
}
Collections.sort(list);
System.out.println(list);
}

public static void main(String[] args) {
RapidSort rs = new RapidSort();
rs.sortArray();
rs.sortList();
}
}

❸ JAVA中list集合的排序

根據字元串的含義,進行對象化,比如,Student,有三個屬性,序號,姓名,分數
注意重寫Student的Compareable介面
然後,List<String>變成List<Student> students=new ArrayList<Student>
然後,遍歷list,算出平均分,放入新的SortList<Student>
列印結果

❹ java怎麼對list進行排序

1,使用Comparator 介面

Student類 結構如下:(省略getter,setter方法)

public class Student {
/***
* 姓名
*/
private String name;
private int age;
private String address;
/***
* 考試得分
*/
private int score;

//省略getter,setter方法
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", score=" + score
+ "]";
}

}

測試方法:

@Test
public void test_ListComparator(){
List<Student>students=new ArrayList<Student>();
Student stu=null;
stu=new Student();
stu.setName("whuang");
stu.setAge(12);
stu.setScore(80);
students.add(stu);

stu=new Student();
stu.setName("rong");
stu.setAge(11);
stu.setScore(90);
students.add(stu);

stu=new Student();
stu.setName("zhu");
stu.setAge(15);
stu.setScore(100);
students.add(stu);

Collections.sort(students,new SystemHWUtil. ListComparator(true,"age"));
System.out.println(students);

}

運行結果:

[Student [name=rong, age=11, score=90], Student [name=whuang, age=12, score=80], Student [name=zhu, age=15, score=100]]

核心類:

public static class ListComparator implements Comparator{
/***
* 是否轉化為Int之後再比較
*/
private boolean isConvertInteger;
/***
* 對哪個列進行排序
*/
private String comparedProperty;
public ListComparator(boolean isConvertInteger,String comparedProperty) {
super();
this.isConvertInteger = isConvertInteger;
this.comparedProperty=comparedProperty;
}
public int compare(Object o1, Object o2) {
if(null!=o1&&null!=o2)
{
try {
Object obj1=ReflectHWUtils.getObjectValue(o1, comparedProperty);
Object obj2=ReflectHWUtils.getObjectValue(o2, comparedProperty);
if(isConvertInteger){
int num1;
int num2;
if(obj1 instanceof Integer){
num1=(Integer)obj1;
num2=(Integer)obj2;
}else{
num1=Integer.parseInt(obj1.toString());
num2=Integer.parseInt(obj2.toString());
}
if(num1>num2){
return 1;
}else if(num1<num2){
return -1;
}else{
return 0;
}
}else{
return obj1.toString().compareTo(obj2.toString());
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return 0/*等於*/;
}
}

2,可以指定是升序還是降序

實例:

@Test
public void test_ListComparator(){
List<Student>students=new ArrayList<Student>();
Student stu=null;
stu=new Student();
stu.setName("whuang");
stu.setAge(12);
stu.setScore(80);
students.add(stu);

stu=new Student();
stu.setName("rong");
stu.setAge(11);
stu.setScore(90);
students.add(stu);

stu=new Student();
stu.setName("zhu");
stu.setAge(15);
stu.setScore(100);
students.add(stu);
SortList<Student> sortList = new SortList<Student>();
sortList.Sort(students, "getAge", "asc");
System.out.println(students);

}

注意:sortList.Sort 的第二個參數是方法名,不是成員變數名.

核心代碼

package com.common.util;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class SortList<E> {
public void Sort(List<E> list, final String method, final String sort) {
Collections.sort(list, new Comparator() {
public int compare(Object a, Object b) {
int ret = 0;
try {
Method m1 = ((E) a).getClass().getMethod(method, null);
Method m2 = ((E) b).getClass().getMethod(method, null);
if (sort != null && "desc".equals(sort))// 倒序
ret = m2.invoke(((E) b), null).toString()
.compareTo(m1.invoke(((E) a), null).toString());
else
// 正序
ret = m1.invoke(((E) a), null).toString()
.compareTo(m2.invoke(((E) b), null).toString());
} catch (NoSuchMethodException ne) {
System.out.println(ne);
} catch (IllegalAccessException ie) {
System.out.println(ie);
} catch (InvocationTargetException it) {
System.out.println(it);
}
return ret;
}
});
}
}

閱讀全文

與sortlistjava相關的資料

熱點內容
鞋盒怎麼做文件夾收納盒視頻 瀏覽:753
模擬電子技術第四版pdf 瀏覽:961
解壓車貸後gps怎麼找 瀏覽:350
源碼資料庫怎麼配備 瀏覽:138
知乎程序員小灰 瀏覽:574
新概念英語第一冊書pdf 瀏覽:5
安卓ans文件怎麼打開 瀏覽:895
選擇題改進分治演算法的方法有 瀏覽:108
下載雲伺服器有什麼好處 瀏覽:23
江蘇機架式伺服器雲主機 瀏覽:411
linux補全命令 瀏覽:514
我要打命令 瀏覽:970
御人pdf 瀏覽:390
小米手機怎麼發送文件夾用qq 瀏覽:917
找人一起玩用什麼app好 瀏覽:398
程序員最煩的4件事 瀏覽:485
怎麼查ice伺服器 瀏覽:760
excel加密不可以復制 瀏覽:308
py編譯器的鍵盤輸入在哪 瀏覽:226
雲伺服器和深度學習 瀏覽:102