關於集合迭代器以及Collections.sort(元素)的一點事
阿新 • • 發佈:2018-12-03
/*一般Collections.sort()用來排序泛型為Integer的集合,若要排序其他型別,必須要 讓該類實現Comparable<T>介面 */ public class day implements Comparable<day> { private int x; private int y; public day(int x,int y) { // TODO Auto-generated constructor stub this.x=x; this.y=y; } @Override public String toString() { // TODO Auto-generated method stub return "("+x+","+y+")"; } public static void main(String[] args) { List<day> list=new ArrayList<>(); list.add(new day(4, 2)); list.add(new day(1, 2)); list.add(new day(3, 2)); System.out.println(list); Collections.sort(list); System.out.println(list); /** * 注意在迭代過程中不可以用list.remove(元素)去刪除該元素 * 若想刪除該元素可用迭代器的remove()方法 * * 對集合運用for each遍歷時等效於迭代器,也不可運用集合的remove(元素)方法 * for (day day : list) { } */ Iterator<day> iterator=list.iterator(); while (iterator.hasNext()) { iterator.next(); iterator.remove(); } System.out.println(list); } /** * 自定義比較規則 * 當返回值>0時,當前物件比引數物件大 * 當返回值<0時,當前物件比引數物件小 * 當返回值=0時,當前物件等於引數物件 * @param o * @return */ @Override public int compareTo(day o) { //定義比較規則 int len=this.x*this.x+this.y*this.y; int olen=o.x*o.x+o.y*o.y; return len-olen; } }