A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

TreeMap<String,String>:
  1. package com.kxg.TreeMap;

  2. import java.util.Set;
  3. import java.util.TreeMap;

  4. /*
  5. * TreeMap:基于二叉树结构(红黑树)的Map接口实现
  6. */
  7. public class TreeMapDemo {
  8.         public static void main(String[] args) {

  9.                 // 创建集合
  10.                 // TreeMap<String,String>
  11.                 TreeMap<String, String> tp = new TreeMap<String, String>();

  12.                 // 添加对象
  13.                 tp.put("李延旭", "商丘");
  14.                 tp.put("任兴亚", "漯河");
  15.                 tp.put("赵磊", "信阳");
  16.                 tp.put("王澳", "周口");
  17.                 tp.put("王澳", "厕所");

  18.                 Set<String> set = tp.keySet();
  19.                 for (String s : set) {
  20.                         String result = tp.get(s);
  21.                         System.out.println(s + "==" + result);
  22.                 }
  23.         }
  24. }
复制代码



2 个回复

倒序浏览
TreeMap<Person,String>:
因为TreeMap是二叉树(红黑树)结构,所以需要做自然排序或者比较器排序。
  1. package com.kxg.TreeMap;

  2. import java.util.Comparator;
  3. import java.util.Set;
  4. import java.util.TreeMap;
  5. import com.kxg.HashMap.Person;

  6. public class TreeMap2 {
  7.         public static void main(String[] args) {

  8.                 // 创建集合对象
  9.                 // TreeMap<Person,String>
  10.                 TreeMap<Person, String> hm = new TreeMap<Person, String>(
  11.                                 new Comparator<Person>() {
  12.                                         @Override
  13.                                         public int compare(Person s1, Person s2) {
  14.                                                 int num = s1.getAge() - s2.getAge();
  15.                                                 int num2 = num == 0 ? s1.getName().compareTo(
  16.                                                                 s2.getName()) : num;
  17.                                                 return num2;
  18.                                         }
  19.                                 });

  20.                 // 创建对象
  21.                 Person p = new Person("李延旭", 20);
  22.                 Person p2 = new Person("任兴亚", 23);
  23.                 Person p3 = new Person("赵磊", 19);
  24.                 Person p4 = new Person("王澳", 20);
  25.                
  26.                 // 添加元素
  27.                 hm.put(p, "商丘");
  28.                 hm.put(p2, "漯河");
  29.                 hm.put(p3, "信阳");
  30.                 hm.put(p4, "周口");
  31.                
  32.                 Set<Person> set = hm.keySet();
  33.                 for(Person key : set)
  34.                 {
  35.                         String value = hm.get(key);
  36.                         System.out.println(key.getName() + ":" + key.getAge() + "=="
  37.                                         + value);
  38.                 }
  39.         }
  40. }
复制代码



回复 使用道具 举报
对键盘录入字符串统计:
  1. package com.kxg.TreeMap;

  2. import java.util.Scanner;
  3. import java.util.Set;
  4. import java.util.TreeMap;

  5. /*
  6. * 对键盘录入字符串进行统计。
  7. */
  8. public class TreeMapTest {
  9.         public static void main(String[] args) {
  10.                 // 键盘录入字符串
  11.                 Scanner sc = new Scanner(System.in);
  12.                 System.out.println("请输入需要统计的字符串:");
  13.                 String line = sc.nextLine();

  14.                 // 把字符串转为字符数组
  15.                 char[] chs = line.toCharArray();

  16.                 // 定义一个TreeMap集合接受键值对
  17.                 TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();

  18.                 // 遍历字符数组,拿到集合中进行对比,因为第一次出现就是null,
  19.                 // 当为null时候,把字符的值换成1,然后存入集合中
  20.                 // 如果不为null,就增加键对应的值,再重新放入到集合中去
  21.                 for (char ch : chs) {
  22.                         Integer i = tm.get(ch);
  23.                         if (i == null) {
  24.                                 tm.put(ch, 1);
  25.                         } else {
  26.                                 i++;
  27.                                 tm.put(ch, i);
  28.                         }
  29.                 }

  30.                 // 定义一个字符串缓冲区
  31.                 StringBuffer sb = new StringBuffer();

  32.                 // 遍历键值对,把键和值都添加到字符串缓冲区中
  33.                 Set<Character> set = tm.keySet();
  34.                 for (Character key : set) {
  35.                         Integer value = tm.get(key);
  36.                         sb.append(key).append("(").append(value).append(")");
  37.                 }

  38.                 // 把字符串缓冲区转为字符串,进行输出
  39.                 String s = sb.toString();
  40.                 // 按照字符自然顺序进行输出的
  41.                 System.out.println(s);
  42.         }
  43. }
复制代码



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马