java學習--集合(第二天)
宣告:由於學習所用環境為JDk1.8,所有涉及java的程式碼均在JDK1.8環境中測試通過,如果環境不同,可能會有錯誤發生!
一、Comparator介面
使用Comparable介面定義排序順序有侷限性:實現此介面的類只能按compareTo()定義的這一種方式排序。
如果同一類物件要有多種排序方式,應該為該類定義不同的比較器(實現Comparator介面的類)TreeSet有一個構造方法允許給定比較器,它就會根據給定的比較器對元素進行排序.
public class RuleScore implements Comparator<Student> { @Override public int compare(Student s1, Student s2) { if(s1.getScore()>s2.getScore()){ return -1; }else if(s1.getScore()<s2.getScore()){ return 1; }else{ if(s1.getAge()>s2.getAge()){ return -1; }else if(s1.getAge()<s2.getAge()){ return 1; }else{ return s1.getName().compareTo(s2.getName()); } } }
如上所示,可以為Student類定義兩個不同的比較器(兩個實現Comparator介面的類)public class RuleAge implements Comparator<Student>{ @Override public int compare(Student s1, Student s2) { if(s1.getAge()>s2.getAge()){ return -1; }else if(s1.getAge()<s2.getAge()){ return 1; }else{ if(s1.getScore()>s2.getScore()){ return -1; }else if(s1.getScore()<s2.getScore()){ return 1; }else{ return s1.getName().compareTo(s2.getName()); } } }
二、Map集合
1、特點:
實現Map介面的集合類用來儲存“鍵-值”對映對。
不能包含重複的鍵,每個鍵最多隻能對映到一個值,值可以重複。
JDK API中Map介面的實現類常用的有:
HashMap
TreeMap
Hashtable (不常用)
Properties
2、Map介面中的常用方法Object put(Object key, Object value); //將指定的“鍵-值”對存入Map中
Object get(Object key); //返回指定鍵所對映的值
Object remove(Object key); //根據指定的鍵把此“鍵-值”對從Map中移除。
boolean containsKey(Object key); //判斷此Map是否包含指定鍵的“鍵-值”對。
boolean containsValue(Object value); //判斷此Map是否包含指定值的“鍵-值”對。
boolean isEmpty(); //判斷此Map中是否有元素。
int size(); //獲得些Map中“鍵-值”對的數量。
void clear(); //清空Map中的所有“鍵-值”對。
Set keySet(); //返回此Map中包含的鍵的Set集。
Collection values(); //返回此Map中包含的值的Collection集。
Set<Map.Entry<K,V>> entrySet() 將所有包含鍵-值對的Map.Entry收集到Set
package map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class HashMapDemo {
public static void main(String[] args) {
HashMap<String, String> hm=new HashMap<>();
hm.put("number", "123");
hm.put("李敏", "13567");
hm.put("city", "廈門");
System.out.println("新增的鍵值對數目是:"+hm.size());
System.out.println("李敏的學號是:"+hm.get("李敏"));
hm.remove("city");
System.out.println("現在的鍵值對數目是:"+hm.size());
//遍歷所有的key
Set<String> keys=hm.keySet();
for(String key:keys){
System.out.println("所有的key是:"+key);
}
//遍歷所有的value
Collection<String> values=hm.values();
for(String value:values){
System.out.println("所有的value是:"+value);
}
//遍歷map集合
Set<Map.Entry<String, String>> entrySet=hm.entrySet();
for(Map.Entry<String, String> mapentry:entrySet){
//System.out.println(mapentry.getKey()+mapentry.getValue());
System.out.println(mapentry);
}
}
}
3、Map.Entry介面
Map.Entry是Map中內部定義的一個介面,專門用來儲存key—>value的內容。
由圖可知,Map中儲存的是Map.Entry,而Map.Entry中儲存的是key—>value鍵值對
4、HashMap類與TreeMap類
(1) HashMap儲存結構使用雜湊表,使用“鍵”進行雜湊存放。所以根據“鍵”去取“值”的效率很高。
TreeMap中的“key-value”對的“key”必須是可“排序”的。
(2) HashTable類
舊版的Hashtable,操作大多跟HashMap相同,只是它保證執行緒的同步。
它有一個子類Properties(屬性集)比較常用:
Properties 類表示了一個持久的屬性集。Properties 可儲存在流中或從流中載入。屬性集中每個鍵及其對應值都是一個字串。
不建議使用 put 和 putAll 這類存放元素方法,應該使用 setProperty(String key, String value)方法,因為存放的“鍵-值”對都是字串。類似取值也應該使用getProperty(String key)。
package map;
import java.util.Properties;
public class PropertiesDemo {
public static void main(String[] args) {
Properties pro=new Properties();
pro.setProperty("country", "China");
pro.setProperty("city", "Xian");
pro.setProperty("province", "Shanxi");
System.out.println(pro.getProperty("country"));
System.out.println(pro.getProperty("abc", "這是預設值"));
}
}
(2)HashMap和Hashtable區別a. HashMap不同步,Hashtable同步
b. HashMap可以儲存null鍵null值,Hashtable不可以
c. HashMap多執行緒操作環境下效率高,Hashtable多執行緒操作環境下效率低
相關推薦
java學習--集合(第二天)
宣告:由於學習所用環境為JDk1.8,所有涉及java的程式碼均在JDK1.8環境中測試通過,如果環境不同,可能會有錯誤發生! 一、Comparator介面 使用Comparable介面定義排序順序有侷限性:實現此介面的類只能按compareTo()定義的這一種方式排序。如
Linux學習入門(第二天)--------基本的系統命令
安裝的映象版本是ubuntu 14.04! 1.sudo apt-get 命令 例如:sudo apt-get install sl //安裝一個名為sl的小程式 終
spring boot 學習筆記(第二天)spring boot整合mybatis
1.spring boot整合mybatis 1.在pom檔案中新增mybatis依賴(如果在建立專案時已經勾選了mybatis選項,就不用新增mybatis-spring-boot-starter了) <dependency> <groupId>
java-web學習筆記(第二章)
直接 () destroy 垃圾回收 垃圾回收器 troy 鏈接 ems cse 第二章:Servlet基礎 1,創建Servlet有幾種方式?處理http請求最好使用哪種方式? 1>直接實現Servlet接口和它的所有方法;&emsp
【自學筆記】0基礎自學機器學習 (第二天)
定義:機器學習是人工智慧的一個分支領域,主要關於構造和研究可以從資料中學習的系統。 小不忍則亂大謀,不可急功近利,工欲善其事,必先利其器,得能吃苦。 &
浙大《java語言》學習筆記(第二週)
2.1物件互動 Display.java package clock; public class Display { private int value = 0; private int limit = 0; public Display(int limit)
HIDL學習筆記之HIDL C++(第二天)
快速訊息佇列 (FMQ) HIDL 的遠端過程呼叫 (RPC) 基礎架構使用 Binder 機制,這意味著呼叫涉及開銷、需要核心操作,並且可以觸發排程程式操作。 不過,對於必須在開銷較小且無核心參與的程序之間傳輸資料的情況,則使用快速訊息佇列 (FMQ) 系統。
java學習日記(1-7)
har span 編譯失敗 數組長度 int() 冒泡排序 string length 類型 java 中標識符可以為$符, 默認是int類型超出int型必須標明是long型char 為 2字節String 是引用類型 byte b = 1;b = b + 1; #會報錯
vue的一些坑(第二天)
作用 小童 過濾 文本 click rip col 官方 小數點 首先啊感謝一位小童鞋的指出其實我寫的這些內容算不上坑,只是平時使用的時候的一點小問題,不過只是個名字啦!再次致謝 1:兩個簡寫的命令 v-bind:class可以簡寫為 :class v-on:click可
Java學習筆記(十五):import關鍵字
http 技術分享 import logs java學習筆記 .cn 關鍵字 blog ava Java學習筆記(十五):import關鍵字
Java學習筆記(十五):this關鍵字
bsp java image nbsp his this mage 學習筆記 筆記 Java學習筆記(十五):this關鍵字
Java學習筆記(十六):static關鍵字
ima 關鍵字 static關鍵字 es2017 java學習筆記 sta com 筆記 nbsp Java學習筆記(十六):static關鍵字
Java學習筆記(十七):super關鍵字
mage cnblogs 分享 關鍵字 super關鍵字 log .cn nbsp java Java學習筆記(十七):super關鍵字
Java學習筆記(二十三):final關鍵字
類繼承 ron 滿足 單詞 靜態 bsp 條件 str 進行 final關鍵字有三種使用場景: final修飾類 final修飾方法 final修飾變量 final修飾的類,不能再有子類繼承。 只要滿足以下條件就可以把一個類設計為final類: 不是專門為繼承而設
Java學習總結(十四)——java反射機制,利用反射動態創建對象
Java反射 動態創建對象 一.Java反射機制1.什麽是反射:反射就是把Java類中的各種成份影射成一個個的Java對象。例:一個類有:成員變量,方法,構造方法等,包等等信息,利用反射技術可以對一個類進行剖析,把各個組成部分影射成一個個對象。2.Java反射常用類:(1)Class類—可獲取類和類的
Java學習總結(十五)——MySQL數據庫(上)—增,刪,改與部分查詢語句
MySQL數據庫 增 刪 改 查 一.MySQL簡介及在DOS下操作MySQL1.MySQL是一種中型關系型數據庫管理系統(DBMS,Database Management System)。註意:關系型數據庫是按照表的方式存儲數據的2.DOS環境下操作MySQL(1)進入MySQL環境:(
Spring框架(第二天)
boolean 反射 rman pro actor . jdk 文件 開源框架 優勢 一、 註入 a) set i. JDK 1.八種基本類型(+包裝類)+String <bean id="User" class="com.dsl.tes
20165228 結對學習 四則運算(第二周)
計劃 目前 BE 保留 成功 不能 porting 規範 程序 20165228 結對學習 四則運算 本次紅色為優化和添加部分 一、需求分析 題目生成 可獨立使用 考慮可擴展支持配置生成不同難度的題目,比如通過參數指定: 題目合法性判斷 測試生成題目的正確性 輸入的合法性
Django學習篇(第二部)
adding 學習 AD odi 時也 hello ret order pytho 執行字符串表示的函數,並為該函數提供全局變量 本篇的內容從題目中就可以看出來,就是為之後剖析tornado模板做準備, #!usr/bin/env pyth
Java學習總結(十六)——MySQL數據庫(中)分組,嵌套,連接查詢及外鍵與關系表設計
MySQL數據庫 分組查詢 連接查詢 子查詢 外鍵與關系表設計 一.分組查詢 1.語法:group by 分組字段1[,分組字段2,.........] [having 分組後的篩選條件]2.註意:分組字段應該與select後的查詢字段一致,否則查詢結果無意義3.分組查詢經常會與聚合函