乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Comparator接口實(shí)現(xiàn)排序

       一本正經(jīng)地胡鬧 2019-09-04
      Interface Comparator<T>
      

      對(duì)任意類型集合對(duì)象進(jìn)行整體排序,排序時(shí)將此接口的實(shí)現(xiàn)傳遞給Collections.sort方法或者Arrays.sort方法排序.
      實(shí)現(xiàn)int compare(T o1, T o2);方法,返回正數(shù),零,負(fù)數(shù)各代表大于,等于,小于。

      單一條件排序:

      舉例:

      		List<Student> stus = new ArrayList<Student>(){
      			{
      				add(new Student("張三", 30));	
      				add(new Student("李四", 20));	
      				add(new Student("王五", 60));	
      			}
      		};
      		//對(duì)users按年齡進(jìn)行排序
      		Collections.sort(stus, new Comparator<Student>() {
      
      			@Override
      			public int compare(Student s1, Student s2) {
      				// 升序
      				//return s1.getAge()-s2.getAge();
      				return s1.getAge().compareTo(s2.getAge());
      				// 降序
      				// return s2.getAge()-s1.getAge();
      				// return s2.getAge().compareTo(s1.getAge());
      			}
      		});
      		// 輸出結(jié)果
      		...
      		
      

      注: 還可以使用lambda表達(dá)式簡(jiǎn)化代碼, 前提是JDK8開發(fā)環(huán)境, 如下:

      		List<Student> stus = new ArrayList<Student>(){
      			{
      				add(new Student("張三", 30));	
      				add(new Student("李四", 20));	
      				add(new Student("王五", 60));	
      			}
      		};
      		//對(duì)users按年齡進(jìn)行排序
      		Collections.sort(stus, (s1,s2)->(s1.getAge()-s2.getAge()));
      

      lambda表達(dá)式是JDK8新特性之一, 允許你通過表達(dá)式來代替功能接口; 細(xì)節(jié)請(qǐng)自行百度… 我也是剛接觸, 啊哈哈, 不熟悉,諒解諒解

      多條件排序:

      舉例:

      		List<Student> stus = new ArrayList<Student>(){
      			{
      				add(new Student("張三", 30, 1));	
      				add(new Student("李四", 20, 2));	
      				add(new Student("王五", 40, 3));	
      				add(new Student("趙六", 30, 4));	
      				add(new Student("陳七", 40, 5));	
      				add(new Student("周八", 20, 6));	
      			}
      		};
      		Collections.sort(stus,new Comparator<Student>() {
      
      			@Override
      			public int compare(Student s1, Student s2) {
      				int flag;
      				// 首選按年齡升序排序
      				flag = s1.getAge()-s2.getAge();
      				if(flag==0){
      					// 再按學(xué)號(hào)升序排序
      					flag = s1.getNum()-s2.getNum();
      				}
      				return flag;
      			}
      		});
      		
      		System.out.println("年齡       學(xué)號(hào)       姓名  ");
      		for(Student s : stus){
      			System.out.println(s.getAge()+"   "+s.getNum()+"   "+s.getName());
      		}
      

      輸出結(jié)果:
      這里寫圖片描述

      自定義條件排序

      		String[] order = {"語(yǔ)文","數(shù)學(xué)","英語(yǔ)","物理","化學(xué)","生物","政治","歷史","地理","總分"};
      		final List<String> definedOrder = Arrays.asList(order);
      		List<String> list = new ArrayList<String>(){
      			{
      				add("總分");
      				add("英語(yǔ)");
      				add("政治");
      				add("總分");
      				add("數(shù)學(xué)");
      			}
      		};
      		Collections.sort(list,new Comparator<String>() {
      
      			@Override
      			public int compare(String o1, String o2) {
      				int io1 = definedOrder .indexOf(o1);
      				int io2 = definedOrder .indexOf(o2);
      				return io1-io2;
      			}
      		});
      		
      		for(String s:list){
      			System.out.print(s+"   ");
      		}
      

      使用lambda表達(dá)式簡(jiǎn)化代碼:

      Collections.sort(list, (o1, o2)->(definedOrder .indexOf(o1)-definedOrder .indexOf(o2)));
      

      輸出結(jié)果:
      這里寫圖片描述

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多