java基礎知識(容器)-01

一:各個集合類之間的關係



二:個人總結



  3.1 迭代器:

package com.vvut;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Test {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("a");
		list.add("a");
		list.add("c");
		// 返回一個迭代器對象
		Iterator<String> iterator = list.iterator();
		while (iterator.hasNext()) {
			System.out.println(iterator.next()+"");
		}
	}
}

截圖



3.2 :比較器:

package com.vvut;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
 * 
 *  StringList{"hello1" , "hello3" , "hello2"}, Collections.sort( stringList ) 能夠得到正確的排序, 那是因爲 
  String 這個對象已經幫我們實現了 Comparable接口 , 所以我們的 Person 如果想排序, 也要實現一個比較器。
 *
 */
public class Test {
	  public static void main(String[] args) {  
	        List<Student> list=new ArrayList<Student>(10);  
	        list.add(new Student(1,"飛"));  
	        list.add(new Student(0,"阿里"));  
	        list.add(new Student(0,"京東"));  
	        list.add(new Student(2,"美團"));  
	        Collections.sort(list); //內部比較器:要排序的對象實現Comparable接口,可以對自身進行比較  
	        System.out.println(list);  
	          
	        List<Teacher> t=new ArrayList<Teacher>(10);  
	        t.add(new Teacher(1,12));  
	        t.add(new Teacher(0,13));  
	        t.add(new Teacher(0,14));  
	        t.add(new Teacher(2,15));  
	        Collections.sort(t,new StudentComparator()); //外部比較器:通過實現Comparator接口  
	        System.out.println(t);  
	    }  
	}  

	  
	class Student implements Comparable {  
	    int num;  
	  
	    String name;  
	  
	    public Student(int num, String name) {  
	        this.num = num;  
	        this.name = name;  
	    }  
	      
	    @Override  
	    public String toString() {  
	        return "\r\tnum:"+num+" name:"+name+"\r";  
	    }  
	  /**
	   * 實現的抽象方法,返回值大於0表示對象大於參數對象;
	   * 小於0表示對象小於參數對象;等於0表示兩者相等
	   * 從大到小排序
	   */
	    public int compareTo(Object o) {  
	        Student tmp=(Student) o;  
	        int result=tmp.num<num?1:(tmp.num==num?0:-1);  
	        //比較姓名的ACDI碼
	        if (result==0) {  
	            result=tmp.name.indexOf(0)>name.indexOf(0)?1:-1;  
	        }  
	        return result;  
	    }  
	}  
	  
	class Teacher{  
	    int num;  
	  
	    double salary;  
	      
	    public Teacher(int num, double salary) {  
	        this.num = num;  
	        this.salary = salary;  
	    }  
	  
	    @Override  
	    public String toString() {  
	        return "\r\tnum:"+num+" salary:"+salary+"\r";  
	    }      
	}  
	  /**
	   *它的實現者被稱爲比較器
	   *
	   */
	class StudentComparator implements Comparator{  
	  
	    public int compare(Object o1, Object o2) {  
	        Teacher t1=(Teacher) o1;  
	        Teacher t2=(Teacher) o2;  
	        int result=t1.num>t2.num?1:(t1.num==t2.num?0:-1); 
	        //result相等比較薪水
	        return result=result==0?(t1.salary<t2.salary?1:-1):result;  
	    }  
	      
	}  

截圖





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章