JAVA常用工具類(一)集合排序

1 概述

  • 集合中基本數據類型的排序
  • 集合中字符串的排序
  • Comparator接口
  • Comparable接口

與數組排序區分開。

集合排序:

  • 使用Collections類裏的sort()方法。
  • sort(List<T> list)
  • 根據元素的自然順序對指定列表按升序進行排序。

自然順序:數字的自然順序指的是數字的數值,字符的自然順序是指字符的ASCII碼值。

2 整型&字符串數據排序

2.1 整型排序

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

public class IntSort {

	public static void main(String[] args) {
		// 對存儲在List中的整型數據進行排序
		List<Integer> list=new ArrayList<Integer>();
		list.add(5);
		list.add(7);
		list.add(1);
		list.add(3);
		
		System.out.println("排序前:");
		for(int n:list) {
			System.out.print(n+"  ");
		}
		
		System.out.println();
		
		Collections.sort(list);
		System.out.println("排序後:");
		for(int n:list) {
			System.out.print(n+"  ");
		}
	}

}

2.2 字符串排序

package com.imooc.sort;

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

public class StringSort {

	public static void main(String[] args) {
		// 對存儲在List中的整型數據進行排序
		List<String> list=new ArrayList<String>();
		list.add("blue");
		list.add("yellow");
		list.add("red");
		list.add("green");
		
		System.out.println("排序前:");
		for(String s:list) {
			System.out.print(s+"  ");
		}
		
		System.out.println();
		
		Collections.sort(list);
		System.out.println("排序後:");
		for(String s:list) {
			System.out.print(s+"  ");
		}
	}

}

3 Comparator接口

3.1 對寵物貓進行名字降序&年齡升序順序

package com.imooc.sort;

public class Cat {
	// 屬性
	private String name;
	private int month;
	private String species;
	
	// 構造方法
	public Cat(String name, int month, String species) {
		super();
		this.name = name;
		this.month = month;
		this.species = species;
	}
	
	//get/set
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getMonth() {
		return month;
	}

	public void setMonth(int month) {
		this.month = month;
	}

	public String getSpecies() {
		return species;
	}

	public void setSpecies(String species) {
		this.species = species;
	}

	@Override
	public String toString() {
		return "Cat [name=" + name + ", month=" + month + ", species=" + species + "]";
	}

}

package com.imooc.sort;

import java.util.Comparator;

import com.imooc.set.Cat;

public class NameComparator implements Comparator<Cat> {

	@Override
	public int compare(Cat arg0, Cat arg1) {
		// 降序排序
		String name0=arg0.getName();
		String name1=arg1.getName();
		int n=name1.compareTo(name0);
		return n;
	}

}

package com.imooc.sort;

import java.util.Comparator;
import com.imooc.set.Cat;


public class AgeComparator implements Comparator<Cat> {

	@Override
	public int compare(Cat o1, Cat o2) {
		// 升序排序
		int age1=o1.getMonth();
		int age2=o2.getMonth();
		return age1-age2;
	}

}

package com.imooc.sort;

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

import com.imooc.set.Cat;

public class CatTest {

	public static void main(String[] args) {
		// 按名字降序
		Cat huahua=new Cat("huahua",5,"英國短毛貓");
		Cat fanfan=new Cat("fanfan",2,"中華田園貓");
		Cat maomao=new Cat("maomao",3,"中華田園貓");
		
		List<Cat> catList=new ArrayList<Cat>();
		catList.add(maomao);
		catList.add(fanfan);
		catList.add(huahua);
		
		//排序前
		System.out.println("排序前:");
		for(Cat cat:catList) {
			System.out.println(cat);
		}
		
		//排序後
		Collections.sort(catList, new NameComparator());
		
		System.out.println("按名字降序排序後:");
		for(Cat cat:catList) {
			System.out.println(cat);
		}
		
		Collections.sort(catList, new AgeComparator());
		
		System.out.println("按年齡升序排序後:");
		//排序後
		for(Cat cat:catList) {
			System.out.println(cat);
		}


	}

}

4 comparable

調用sort方法進行排序時,不需要指定Comparable接口的實現類

發佈了41 篇原創文章 · 獲贊 7 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章