算法竞赛中的常用JAVA API :HashMap 和 TreeMap

摘要

本文主要介绍Map接口下的HashMap和TreeMap。

HashMap

HashMap是基于哈希表的 Map 接口的实现,是无序的

  1. clear()//清空。
  2. containsKey(Object key)//如果包含指定键,返回true
  3. containsValue(Object value)//如果包含指定值, 返回true
  4. get(Object key)//返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回 null。
  5. isEmpty()//如果此映射不包含键-值映射关系,则返回 true
  6. put(K key, V value)//在此映射中关联指定值与指定键。
  7. remove(Object key)//从此映射中移除指定键的映射关系(如果存在)。
  8. size()返回此映射中的键-值映射关系数。

    实例
HashMap<Integer, Integer> m = new HashMap<>();//定义格式
m.put(100,1);
System.out.print(m.get(100)); // 1

TreeMap

TreeMap是基于红黑树实现的,是有序的, 可进行排序

此实现为 containsKey、get、put 和 remove 操作提供受保证的 log(n) 时间开销

  1. clear()//清空
  2. containsKey(Object key)//如果包含指定键,返回true
  3. containsValue(Object value)//如果包含指定值, 返回true
  4. get(Object key)//返回指定键的值, 如果不存在返回null
  5. firstKey()//返回此映射中当前第一个(最低)键。
  6. lastKey()返回映射中当前最后一个(最高)键
  7. ceilingKey(K key)返回大于等于给定键的最小键;如果不存在这样的键,则返回 null。
  8. floorKey(K key)返回小于等于给定键的最大键;如果不存在这样的键,则返回 null。

HashMap和TreeMap的遍历方式

HashMap和TreeMap可以根据迭代器遍历,但,它俩不能直接遍历,

可以遍历键的集合, 值的集合, 键值对的集合。

  1. 通过keySet()获得键,然后根据键遍历

    使用while + Iterator

TreeMap<Integer, String> m = new TreeMap<>();
m.put(1,"A");
m.put(2,"B");
Set<Integer> s = m.keySet();
Iterator it = s.iterator();
Integer key = null; // 这里必须必须声明为类。
while(it.hasNext()){
key = (Integer)it.next();
String value = m.get(key);
System.out.print(value);
}

使用增强for

TreeMap<Integer, String> m = new TreeMap<>();
m.put(1,"A");
m.put(2,"B");
for(int k : m.keySet()){
System.out.print(m.get(k));
}
  1. 直接通过values()遍历值

    使用while 和 Iterator
TreeMap<Integer, String> m = new TreeMap<>();
m.put(1,"A");
m.put(2,"B");
Collection<String> s = m.values();
Iterator it = s.iterator();
String value = null; // 这里必须必须声明为类。
while(it.hasNext()){
value = (String)it.next();
System.out.print(value);
}

使用增强for

使用增强for

TreeMap<Integer, String> m = new TreeMap<>();
m.put(1,"A");
m.put(2,"B");
for(String value : m.values()){
System.out.print(value);
}

增强for还是十分方便滴

增强for还是十分方便滴

注:转载 https://blog.csdn.net/GD_ONE/article/details/104084758

最新文章

  1. How to Fix GNOME License Not Accepted Issue on CentOS 7
  2. 洛谷 P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers Label:ExWater
  3. iOS9 3DTouch开发
  4. [原创.数据可视化系列之三]使用Ol3加载大量点数据
  5. 怎样用好ZBrush 中的映射大师功能
  6. BuildingAssetBundles in 5.x
  7. 【转】Docker网络详解及pipework源码解读与实践
  8. UltraISO向U盘写入镜像特别慢
  9. LightOj1388 - Trapezium Drawing(求梯形点的坐标)
  10. hdu - 2083 - 简易版之最短距离
  11. nyoj 108 士兵杀敌(一)
  12. 翻译:Knockout 快速上手 - 2: 安装 knockoutJS
  13. hive 安装教程
  14. [转]标准C++字符串string以及MFC6.0字符串CString的tokenize和split函数
  15. 一步一步从原理跟我学邮件收取及发送 12.telnet命令行收一封信pop3
  16. Spark技术内幕:Sort Based Shuffle实现解析
  17. 1、libgdx简介
  18. 项目Alpha冲刺——代码规范、任务及计划
  19. (转)喜马拉雅2018 Java面试题目
  20. Confluence 6 选择一个外部数据库

热门文章

  1. 35、cobbler自动化安装操作系统
  2. CRM系统对管理客户的帮助
  3. mysql binlog恢复数据实战
  4. 深入理解Java并发类——AQS
  5. java基础---java8后新特性
  6. java基础---泛型机制
  7. java基础---集合(1)
  8. Installation failed with message INSTALL_FAILED_TEST_ONLY问题
  9. Scala学习——函数
  10. P4293 [WC2010]能量场