91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TreeMap簡單教程

發布時間:2020-07-01 15:00:11 來源:網絡 閱讀:122 作者:ckllf 欄目:編程語言

  TreeMap簡介

  在Map集合框架中,除了HashMap以外,TreeMap也是常用到的集合對象之一。

  與HashMap相比,TreeMap是一個能比較元素大小的Map集合,會對傳入的key進行了大小排序。其中,可以使用元素的自然順序,也可以使用集合中自定義的比較器來進行排序;

  不同于HashMap的哈希映射,TreeMap實現了紅黑樹的結構,形成了一顆二叉樹。

  TreeMap繼承于AbstractMap,實現了Map, Cloneable, NavigableMap, Serializable接口。

  (1)TreeMap 繼承于AbstractMap,而AbstractMap實現了Map接口,并實現了Map接口中定義的方法,減少了其子類繼承的復雜度;

  (2)TreeMap 實現了Map接口,成為Map框架中的一員,可以包含著key-value形式的元素;

  (3)TreeMap 實現了NavigableMap接口,意味著擁有了更強的元素搜索能力;

  (4)TreeMap 實現了Cloneable接口,實現了clone()方法,可以被克隆;

  (5)TreeMap 實現了Java.io.Serializable接口,支持序列化操作;

  TreeMap具有如下特點:

  不允許出現重復的key;

  可以插入null鍵,null值;

  可以對元素進行排序;

  無序集合(插入和遍歷順序不一致);

  TreeMap基本操作

  public class TreeMapTest {

  public static void main(String[] agrs){

  //創建TreeMap對象:

  TreeMap treeMap = new TreeMap();

  System.out.println("初始化后,TreeMap元素個數為:" + treeMap.size());

  //新增元素:

  treeMap.put("hello",1);

  treeMap.put("world",2);

  treeMap.put("my",3);

  treeMap.put("name",4);

  treeMap.put("is",5);

  treeMap.put("huangqiuping",6);

  treeMap.put("i",6);

  treeMap.put("am",6);

  treeMap.put("a",6);

  treeMap.put("developer",6);

  System.out.println("添加元素后,TreeMap元素個數為:" + treeMap.size());

  //遍歷元素:

  Set> entrySet = treeMap.entrySet();

  for(Map.Entry entry : entrySet){

  String key = entry.getKey();

  Integer value = entry.getValue();

  System.out.println("TreeMap元素的key:"+key+",value:"+value);

  }

  //獲取所有的key:

  Set keySet = treeMap.keySet();

  for(String strKey:keySet){

  System.out.println("TreeMap集合中的key:"+strKey);

  }

  //獲取所有的value:

  Collection valueList = treeMap.values();

  for(Integer intValue:valueList){

  System.out.println("TreeMap集合中的value:" + intValue);

  }

  //獲取元素:

  //獲取集合內元素key為"huangqiuping"的值

  Integer getValue = treeMap.get("huangqiuping");

  //獲取集合內第一個元素

  String firstKey = treeMap.firstKey();

  //獲取集合內最后一個元素

  String lastKey =treeMap.lastKey();

  //獲取集合內的key小于"huangqiuping"的key

  String lowerKey =treeMap.lowerKey("huangqiuping");

  //獲取集合內的key大于等于"huangqiuping"的key

  String ceilingKey =treeMap.ceilingKey("huangqiuping");

  //獲取集合的key從"a"到"huangqiuping"的元素

  SortedMap sortedMap =treeMap.subMap("a","my");

  //刪除元素:

  //刪除集合中key為"huangqiuping"的元素

  Integer removeValue = treeMap.remove("huangqiuping");

  //清空集合元素:

  treeMap.clear();

  //判斷方法:

  //判斷集合是否為空

  boolean isEmpty = treeMap.isEmpty();

  //判斷集合的key中是否包含"huangqiuping"

  boolean isContain = treeMap.containsKey("huangqiuping");

  }

  }

  TreeMap排序

  (1)使用元素自然排序

  在使用自然順序排序時候,需要區分兩種情況:一種是Jdk定義的對象,一種是自己定義的對象;

  public class SortedTest implements Comparable {

  private int age;

  public SortedTest(int age){

  this.age = age;

  }

  public int getAge() {

  return age;

  }

  public void setAge(int age) {

  this.age = age;

  }

  //自定義對象,實現compareTo(T o)方法:

  public int compareTo(SortedTest sortedTest) {

  int num = this.age - sortedTest.getAge();

  //為0時候,兩者相同:

  if(num==0){

  return 0;

  //大于0時,傳入的參數小:

  }else if(num>0){

  return 1;

  //小于0時,傳入的參數大:

  }else{

  return -1;

  }

  }

  }

  public class TreeMapTest {

  public static void main(String[] agrs){

  //自然順序比較

  naturalSort();

  }

  //自然排序順序:

  public static void naturalSort(){

  //第一種情況:Integer對象

  TreeMap treeMapFirst = new TreeMap();

  treeMapFirst.put(1,"huangqiuping");

  treeMapFirst.put(6,"huangqiuping");

  treeMapFirst.put(3,"huangqiuping");

  treeMapFirst.put(10,"huangqiuping");

  treeMapFirst.put(7,"huangqiuping");

  treeMapFirst.put(13,"huangqiuping");

  System.out.println(treeMapFirst.toString());

  //第二種情況:SortedTest對象

  TreeMap treeMapSecond = new TreeMap();

  treeMapSecond.put(new SortedTest(10),"huangqiuping");

  treeMapSecond.put(new SortedTest(1),"huangqiuping");

  treeMapSecond.put(new SortedTest(13),"huangqiuping");

  treeMapSecond.put(new SortedTest(4),"huangqiuping");

  treeMapSecond.put(new SortedTest(0),"huangqiuping");

  treeMapSecond.put(new SortedTest(9),"huangqiuping");

  System.out.println(treeMapSecond.toString());

  }

  }鄭州看婦科哪家醫院好 http://www.hnzzkd.com/

  在自然順序比較中,需要讓被比較的元素實現Comparable接口,否則在向集合里添加元素時報:"java.lang.ClassCastException: com.huangqiuping.collection.map.SortedTest cannot be cast to java.lang.Comparable"異常;

  這是因為在調用put()方法時,會將傳入的元素轉化成Comparable類型對象,所以當你傳入的元素沒有實現Comparable接口時,就無法轉換,遍會報錯;

  (2)使用自定義比較器排序

  使用自定義比較器排序,需要在創建TreeMap對象時,將自定義比較器對象傳入到TreeMap構造方法中;

  自定義比較器對象,需要實現Comparator接口,并實現比較方法compare(To1,To2);

  使用自定義比較器排序的話,被比較的對象無需再實現Comparable接口了;

  public class SortedTest {

  private int age;

  public SortedTest(int age){

  this.age = age;

  }

  public int getAge() {

  return age;

  }

  public void setAge(int age) {

  this.age = age;

  }

  }

  public class SortedTestComparator implements Comparator {

  //自定義比較器:實現compare(To1,To2)方法:

  public int compare(SortedTest sortedTest1, SortedTest sortedTest2) {

  int num = sortedTest1.getAge() - sortedTest2.getAge();

  if(num==0){//為0時候,兩者相同:

  return 0;

  }else if(num>0){//大于0時,后面的參數小:

  return 1;

  }else{//小于0時,前面的參數小:

  return -1;

  }

  }

  }

  public class TreeMapTest {

  public static void main(String[] agrs){

  //自定義順序比較

  customSort();

  }

  //自定義排序順序:

  public static void customSort(){

  TreeMap treeMap = new TreeMap(new SortedTestComparator());

  treeMap.put(new SortedTest(10),"hello");

  treeMap.put(new SortedTest(21),"my");

  treeMap.put(new SortedTest(15),"name");

  treeMap.put(new SortedTest(2),"is");

  treeMap.put(new SortedTest(1),"huangqiuping");

  treeMap.put(new SortedTest(7),"world");

  System.out.println(treeMap.toString());

  }

  }


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祁东县| 灵山县| 浦县| 孝义市| 江门市| 凯里市| 确山县| 靖江市| 滦平县| 石屏县| 乌拉特中旗| 德江县| 灯塔市| 潮安县| 广宗县| 磐石市| 雅江县| 丰原市| 温泉县| 乌海市| 蚌埠市| 绩溪县| 汤阴县| 九龙县| 东兰县| 荣成市| 昭平县| 铜鼓县| 巢湖市| 吉林市| 延庆县| 镇原县| 四会市| 延吉市| 玉环县| 晋城| 和静县| 洛南县| 芦山县| 新安县| 澄城县|