## 集合排序
~~~java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 集合排序
* @author 一教室
*
*/
public class CollectionSort {
public static void main(String[] args) {
//如果集合中存儲的是基本數據類型的包裝類
List<Integer> list = new ArrayList<Integer>();
list.add(3);
list.add(7);
list.add(2);
list.add(5);
list.add(1);
list.add(11);
list.add(22);
System.out.println("list排序前的順序" + list);
Collections.sort(list);//根據元素的自然順序對指定列表按升序進行排序。
System.out.println("list排序后的順序" + list);
//如果集合中存儲的是字符串
List<String> list2 = new ArrayList<String>();
list2.add("3");
list2.add("7");
list2.add("2");
list2.add("5");
list2.add("1");
list2.add("11");
list2.add("22");
list2.add("212");
list2.add("31");
System.out.println("list2排序前的順序" + list2);
Collections.sort(list2);//字符串是按照其首字母對應的ASCII(Unicode)碼值進行排序的。
System.out.println("list2排序后的順序" + list2);
//存儲中文字符串
List<String> list3 = new ArrayList<String>();
list3.add("趙");
list3.add("錢");
list3.add("孫");
list3.add("李");
list3.add("周");
list3.add("吳");
list3.add("鄭");
list3.add("王");
System.out.println("list3排序前的順序" + list3);
Collections.sort(list3);//字符串是按照對應的ASCII(Unicode)碼值字典順序進行排序的。
System.out.println("list3排序后的順序" + list3);
}
}
~~~
~~~java
public class Student implements Comparable<Student> {
private String name;
private String code;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student(String name, String code, int age) {
super();
this.name = name;
this.code = code;
this.age = age;
}
public Student() {
super();
}
@Override
public String toString() {
return "Student [姓名=" + name + ", 學號=" + code + ", 年齡=" + age + "]";
}
/**
* 如果compareTo方法返回值為0,表示當前對象等于stu(參數對象);
* 如果compareTo方法返回值為負數,表示當前對象小于stu;
* 如果compareTo方法返回值為整數,表示當前對象大于stu
* @param stu
* @return
*/
@Override
public int compareTo(Student stu) {
//按照學號升序排列
String sCode = stu.getCode();
String code = this.code;
//比較sCode和code的大小,compareTo()方法
int result = code.compareTo(sCode);
return result;
}
}
~~~
~~~java
import java.util.Comparator;
/**
* Comparator接口的泛型,傳入的是想要進行比較的類型
* @author 一教室
*
*/
public class StuComparator implements Comparator<Student> {
/**
* compare方法,此方法的方法體是Student類進行排序的依據
* 如果compare方法返回值是正整數,說明arg0大于arg1,則arg0排在arg1后面(arg0 > arg1)
* 如果compare方法返回值是0,說明arg0等于arg1,則arg0和arg1位置不變(arg0 = arg1)
* 如果compare方法返回值是負整數,說明arg0小于arg1,則arg0排在arg1前面(arg0 < arg1)
*/
@Override
public int compare(Student arg0, Student arg1) {
/*String name0 = arg0.getName();
String name1 = arg1.getName();*/
/**
* compareTo方法,不過是用來比較此處的姓名,是String類的方法
* 如果參數字符串name1等于此字符串name0,則返回0(name0 = name1)
* 如果參數字符串name1小于此字符串name0,則返回正整數(name0 > name1)
* 如果參數字符串name1大于此字符串name0,則返回負整數(name0 < name1)
* 這里的大于小于等于,指的是按照字典順序比較
*/
/*int result = name0.compareTo(name1);
return (-1)*result;*/
int age0 = arg0.getAge();
int age1 = arg1.getAge();
int result = age1 - age0;
return result;
}
}
~~~
~~~java
import java.util.Comparator;
public class StringComparator implements Comparator<String> {
//自己設置一個字典
String[] familyName = {"趙","錢","孫","李","周","吳","鄭","王"};
public static int getIndex(String[] arr, String value) {
for (int i = 0; i < arr.length; i++) {
if (arr[i].equals(value)) {
return i; //字符串時,換為 equals
}
}
return -1;//如果未找到返回-1
}
@Override
public int compare(String o1, String o2) {
int index1 = StringComparator.getIndex(familyName, o1);//該方法返回元素在數組中的索引
int index2 = StringComparator.getIndex(familyName, o2);
int result = index1 - index2;
return result;
}
}
~~~
~~~java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ClassSort {
public static void main(String[] args) {
//按照學生姓名進行升序排列
Student xcl = new Student("徐春林", "j121001", 23);
Student lwx = new Student("陸文鑫", "j121002", 25);
Student gjn = new Student("高峻楠", "j121003", 21);
Student xs = new Student("徐爽", "j121004", 22);
List<Student> list = new ArrayList<Student>();
list.add(lwx);
list.add(xs);
list.add(xcl);
list.add(gjn);
System.out.println("排序前的順序:");
for(Student stu : list) {
System.out.println(stu);
}
//Collections.sort(list, new StuComparator());//此處要將排序的依據(匿名對象,實現Comparator接口)傳入sort方法
Collections.sort(list);
System.out.println("排序后的順序:");
for(Student stu : list) {
System.out.println(stu);
}
List<String> list2 = new ArrayList<String>();
list2.add("趙");
list2.add("周");
list2.add("孫");
list2.add("錢");
list2.add("李");
list2.add("鄭");
list2.add("王");
list2.add("吳");
System.out.println("list2排序前的順序:");
for(String str : list2) {
System.out.println(str);
}
Collections.sort(list2, new StringComparator());
System.out.println("list2排序后的順序:");
for(String str : list2) {
System.out.println(str);
}
}
}
~~~
- 課程開始
- 第一課20191008
- 第二課20191009
- HTML
- CSS
- CSS第一課
- CSS第二課
- CSS第三課
- CSS第四課
- CSS第五課
- JavaScript
- Js第一課
- Js第二課
- Js第三課
- Js第四課
- Js第五課
- Js第六課
- Js第七課
- Js-事件模型
- Js-2019-10-31-標準庫
- Js-2019-11-01- 標準庫
- Js-2019-11-01-Json
- Js-2019-11-01-對象的創建
- Js-2019-11-04-this的使用
- Js-2019-11-05-storage與異常
- Js-2019-11-05-BOM與補充知識點
- Js-2019-11-06-正則表達式和計時器
- jQuery
- jQuery-2019-11-13-初識jQuery
- jQuery-2019-11-14-jQuery節點操作
- jQuery-2019-11-15-jQuery節點操作二
- jQuery-2019-11-16-jQuery效果與動畫
- Java
- Java-2019-11-27-變量直接量數據格式運算符
- Java-2019-11-28-流程控制
- Java-2019-12-02-數組
- Java-2019-12-04 面向對象
- Java-2019-12-05-封裝
- Java-2019-12-06-深入構造器
- Java-2019-12-09-繼承
- Java-2019-12-10-多態
- Java-2019-12-10-包裝類
- Java-2019-12-11-final修飾符
- Java-2019-12-11-包裝類
- Java-2019-12-11-接口
- java-2019-12-13-設計模式
- Java-2019-12-16-集合框架
- Java-2019-12-18-集合排序
- Java-2019-12-23-常用類學習
- Java-2019-12-25-異常處理
- Java-2019-12-31-內部類詳解