2、Collections操作(自定義類)的各種實現

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

1、排序(sort)

要想實現排序,必須實現compare方法,這樣Collection才知道是怎樣的排序規則。普通的數據類型,比如:int 、String、long等都已經實現了Comparable接口,這個接口里面有兩個抽象方法:compare() 和 equals(),而equals在object中定義的,所以所有類都會實現了這個方法,因而就只需要實現compare()即可。所以自定義類也需要自己實現Comparable接口,自己重寫里面的compareTo方法

  • 1、bean實現comparable接口,重寫compareto方法

      public class CompareTest {public static void main(String[] args) {User user = new User();user.age = 11;User user1 = new User();user.age = 5;User user2 = new User();user.age = 8;User user3 = new User();user.age = 3;List<User> users = new ArrayList<User>();users.add(user);users.add(user1);users.add(user2);users.add(user3);System.out.println(users);Collections.sort(users);System.out.println(users);}}class User implements Comparable<User> {public String name;public int age;public String addr;public String sortType;[@Override](https://my.oschina.net/u/1162528)public int compareTo(User user) {return this.age > user.age ? 1 : -1;   //升序排序升序升序升序//return this.age > user.age ? -1 : 1;   //降序降序降序降序降序}}
    
  • 2、直接在Collections.sort中傳入一個匿名函數

      Collections.sort(fileList, new Comparator<File>() {[@Override](https://my.oschina.net/u/1162528)public int compare(File leftFile, File rightFile) {return leftFile.lastModified() > rightFile.lastModified() ? -1 : 1;}});
    

compareTo規則總結

返回1表示交換,返回0或者-1表示不交換,所以

int、long、float等字段使用=>return this.age > user.age ? 1 : -1;  //升序return this.age > user.age ? -1 : 1;  //降序String類型字段使用=>return this.name.compareTo(user.name);  //升序return -this.name.compareTo(user.name);  //降序

2、是否存在的判斷(contains,containsAll)

這個方法調用自定義類中的equals方法進行比較,所以需要重寫equals方法

public class ContainsTest{public static void main(String[] args) {UserBean userBean1 = new UserBean("1");UserBean userBean2 = new UserBean("1");LinkedList<UserBean> userBeenList = new LinkedList<>();userBeenList.add(userBean1);System.out.println(userBeenList.contains(userBean2));}}class UserBean {private String personId;public UserBean(String personId){this.personId = personId;}public String getPersonId() {return personId;}public void setPersonId(String personId) {this.personId = personId;}[@Override](https://my.oschina.net/u/1162528)public boolean equals(Object obj){  //這里一定是Object對象,因為equals方法是在Object那里繼承過來的,//方法的參數要和父類一致,否則不算重寫if(obj instanceof UserBean){UserBean otherUser = (UserBean) obj;if (this.personId == otherUser.personId) {return true;}else {return false;}}return false;}
}

轉載于:https://my.oschina.net/liufukin/blog/2221785

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537763.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537763.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537763.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mysql sql語句積累

分組排序 #alter table zxfw_offline_qa add zx_number varchar(50) COMMENT 咨詢編號&#xff0c;提問日期提問順序 AFTER id;/* select (i : case when pre_consult_timeconsult_time then i 1 else 1 end ) rownum, qa.*,(pre_consult_time:consult_time) from zxfw_…

中綴表達式轉換成后綴表達式(只適用于加減乘除運算)

1 #include <iostream>2 #include <stack>3 #include <cctype>4 5 using namespace std;6 7 //獲取符號的優先級8 int getPriority(char c)9 { 10 int priority -1; 11 switch (c) { 12 case : 13 priority 1; 14 break; 15 …

android多接口請求參數,okhttp3 使用json參數post方式請求接口數據(android)

1. 谷歌自帶的json不支持像map一樣直接put字符串進去&#xff0c;所以先導入阿里的json包2. 創建json對象&#xff0c;并且放入所要請求的參數 //登錄 private void loginRequest() { String url Contents.url"login"; JSONObject json new JSONObject(); json.put…

由淺入深,一文掌握NGINX知識文集

&#x1f3c6;作者簡介&#xff0c;普修羅雙戰士&#xff0c;一直追求不斷學習和成長&#xff0c;在技術的道路上持續探索和實踐。 &#x1f3c6;多年互聯網行業從業經驗&#xff0c;歷任核心研發工程師&#xff0c;項目技術負責人。 &#x1f389;歡迎 &#x1f44d;點贊?評論…

MySQL not in查詢不出數據(MySQL not in 無效)

今天使用 MySQL 的 not in 進行查詢的時候&#xff0c;發現結果里面并沒有返回任何數據。SQL 語句沒有任何問題&#xff0c;但是結果集卻是空&#xff0c;實在無法理解。糾結了半天&#xff0c;最后使用 left join&#xff0c;兩表關聯&#xff0c;找到了目標數據。但是這樣的話…

Python語法特點如注釋規則、代碼縮進、編碼規范等

在Python中&#xff0c;通常包括3種類型的注釋&#xff0c;分別是單行注釋、多行注釋和中文編碼聲明注釋。單行注釋在Python中&#xff0c;使用“#”作為單行注釋的符號。從符號“#”開始直到換行為止&#xff0c;“#”后面所有的內容都作為注釋的內容&#xff0c;并被Python編…

修改android.jar教程,Android修改jar包文件

1、Android studio中新建java文件&#xff0c;取和將要修改的文件相同的文件名&#xff0c;把class文件中代碼復制過去&#xff0c;修改需要改動的代碼2、新建txt文件&#xff0c;將新建的Java文件按照依賴關系將路經添加到新建的txt文件中&#xff0c;被依賴的放在最前面(ps:此…

安卓市場上架總結

安卓上架截圖&#xff08;不要帶手機外觀&#xff09; 注意&#xff1a;截圖不能有二維碼小米 至少3張&#xff0c;480*854像素&#xff0c;JPG、PNG格式。騰訊應用寶 請上傳2-5張截圖&#xff08;尺寸保持一致&#xff09;&#xff0c;單張圖片不超過1M。截圖不能小于320*480像…

android 左右分欄聯動布局,Layout 布局(24 分欄)

基礎布局使用單一分欄創建基礎的柵格布局(:span“0~24”).el-row {margin-bottom: 20px;&:last-child {margin-bottom: 0;}}.el-col {border-radius: 4px;}.bg-purple-dark {background: #99a9bf;}.bg-purple {background: #d3dce6;}.bg-purple-light {background: #e5e9f2…

洛谷P4238 【模板】多項式求逆(NTT)

傳送門 學習了一下大佬的->這里 已知多項式$A(x)$&#xff0c;若存在$A(x)B(x)\equiv 1\pmod{x^n}$ 則稱$B(x)$為$A(x)$在模$x^n$下的逆元&#xff0c;記做$A^{-1}(x)$ 具體的來說的話&#xff0c;就是兩個多項式$A,B$相乘模$x^n$之后&#xff0c;所有次數大于等于$n$的項都…

win10安裝TortoiseGit

TortoiseGit 是Git的可視化工具。所以前提是已經安裝了Git&#xff0c;安裝很簡單一路next。 下載地址&#xff0c;百度搜“TortoiseGit”&#xff0c;一般是第一個。 目前地址是&#xff1a;https://tortoisegit.org/download/ 如果打不開&#xff0c;可以進入騰訊軟件中心…

CF1045G AI robots(動態開點線段樹)

題意 火星上有$N$個機器人排成一行&#xff0c;第$i$個機器人的位置為$x_{i}$&#xff0c;視野為$r_{i}$&#xff0c;智商為$q_{i}$。我們認為第$i$個機器人可以看到的位置是$[x_{i}-r_{i},x_{i}r_{i}]$。如果一對機器人相互可以看到&#xff0c;且它們的智商$q_{i}$的差距不大…

android qq登錄 獲取用戶信息嗎,免登錄 只需要一個QQ號就能獲取QQ頭像和QQ昵稱 獲取QQ用戶信息API...

[PHP] 純文本查看 復制代碼<?php // headerheader("Content-Type:application/json");error_reporting(E_ALL^E_NOTICE^E_WARNING);// 獲取QQ號$qq $_GET["qq"];// 過濾if (trim(empty($qq))) {echo json_encode(array(status > error,msg > 未…

Python3.8安裝 jupyter報錯 NotImplementedError

報錯如下&#xff1a; 原因&#xff1a; 是由于 python3.8 asyncio 在 windows 上默認使用 ProactorEventLoop 造成的&#xff0c;而不是之前的 SelectorEventLoop。jupyter 依賴 tornado&#xff0c;而 tornado 在 window 上需要使用 SelectorEventLoop&#xff0c;所以產生這…

淺析Nginx 正向代理與反向代理

1、正向代理和反向代理的概念 無論是正向代理&#xff0c;還是反向代理&#xff0c;說到底&#xff0c;就是代理模式的衍生版本罷了。我們都學習過代理設計模式&#xff0c;都知道代理模式中有代理角色和被代理角色&#xff0c;為什么這么說&#xff0c;因為這兩個角色對于我們…

pycharm 安裝 jupyter

jupyter可以像筆記一樣&#xff0c;在學習和整理思路時很好。 使用的python是3.7.5版本 windows安裝步驟&#xff1a; cmd 再修改下pip的源&#xff0c;選擇國內&#xff0c;這樣快。 國內pip源: 阿里云 https://mirrors.aliyun.com/pypi/simple/ 廣東 豆瓣https://pypi…

android5.1 sdk version,java - Android SDK version 23.6 - Stack Overflow

Does it support java 8 yet?Eclipse is displaying this as a problem, surely it does support 8 by now? In the release notes for revision 23.6 it says java 7 or higher, does this mean java 8 is included or? Wish theyd be more specific about such details. A…

或成為性能寵兒,榮耀8x Max 驍龍660版首銷在即

今天已經是十一假期的最后一天了&#xff0c;假期馬上就要結束了&#xff0c;雖然這有點讓人遺憾&#xff0c;但是接下來的好消息讓很多人的心情好了不少&#xff0c;那就是10月8日榮耀8x Max驍龍660版本就要在全平臺開售了&#xff0c;這恐怕是節后最開心的事情了。此前&#…

績效考核編寫說明

第一步&#xff1a; 請大家從群文件下載自己的考核表&#xff0c;該表格是季度初填寫的&#xff0c;與實際進度安排有偏差&#xff0c;需要調整&#xff08;見第三步&#xff09; 第二步&#xff1a; 請大家從群文件下載部門考核表&#xff0c;如第四季度該文件名“【預評分】…

android 雙線程等待,在Java/Android中啟動另一個線程之前如何等待線程完成?

在回答您的問題之前&#xff0c;我強烈建議您查看ExecutorServices&#xff0c;例如ThreadPoolExecutor。現在回答你的問題&#xff1a;如果要等待上一個線程完成&#xff0c;在開始下一步之前&#xff0c;您可以在之間添加thread.join()&#xff1a;for(int i 0; i < 10; …