java教程之Map应该怎么用

在自学或者看java教程的时候,大家多多少少都存在着这样或者那样的疑惑,对于这些中软国际小编一直也在整理,今天为大家献上的是关于Map应该怎样去用的一些方法,还是跟过去一样,在这里,小编提供的希望大家把它看成是思路,在技术的道路上还是需要不断的探索,自行研究才能最终体会到这门语言的伟大与迷人之处。

下面言归正传:

Map与Collection不同,Map中保存的是键值对,Key值不允许重复,而Collection中保存的是单个对象。Map接口中主要的方法有:

(1)V put(K key,V value)

该方法可以将key和value存到Map对象中。如果key已经存在,则被覆盖,返回被覆盖前的value。如果key不存在,则返回null。

(2)V get(Object key)

该方法可以根据key值返回对应的value。

(3)int size()

返回Map对象中键值对的数量。

(4)Set keySet()

将Map对象中的key值取出,返回到Set对象中。

(5)Collection values()

将Map对象中的value值取出,返回到Collection对象中。

Map是接口,无法直接实例化对象,所以要使用Map必须通过Map的实现类创建对象。下面介绍Map接口的4个主要实现类。

1)HashMap

HashMap是Map类的一个常用实现类,HashMap根据key值的hashCode和equals方法判断其是否唯一,与HashSet中保证元素唯一性的方式相同,请参考HashSet章节。如下代码所示:

package com.etc.chapter14;

import java.util.HashMap;

import java.util.Set;

public class TestHashMap {

publicstatic void main(String[] args) {

// TODO Auto-generated method stub

Player player1=newPlayer("110-999","Kate");

Player player2=newPlayer("110-888","Grace");

Team team1=new Team("China");

Team team2=new Team("USA");

HashMap map=newHashMap();

map.put(player1, team1);

map.put(player2, team2);

Set set=map.keySet();

for(Player p:set){

System.out.println(map.get(p).getName());

}}}

上述代码中,首先使用HashMap存储Player和Team之间的映射关系,使用put方法将两对键值对存储到了一个HashMap对象中。然后通过Map的keySet方法将Map的key值转换为一个Set对象,进一步使用增强for循环,根据key值迭代所有value值。运行结果如下:

China

USA

2)TreeMap

TreeMap是Map的一个实现类,不仅能保证Key值唯一,还能根据key值进行排序。TreeMap的key必须实现Comparable接口,实现compareTo方法。TreeMap根据compareTo的逻辑,对key进行排序。具体方式与TreeSet的排序逻辑相同,请参考TreeSet章节。

修改key值的类型Player类,实现Comparable接口,覆盖compareTo方法,如下代码所示:

package com.etc.chapter14;

public class Player implementsComparable{

privateString id;

privateString name;

//省略其他代码

public intcompareTo(Player arg0) {

// TODO Auto-generated method stub

return this.id.compareTo(arg0.id);

}}

上述代码中,Player类实现了Comparable接口,覆盖了compareTo方法,方法中根据Player的id值的字典顺序进行比较。使用下面代码测试:

package com.etc.chapter14;

public class TestTreeMap {

publicstatic void main(String[] args) {

Player player1=new Player("110-999","Kate");

Player player2=newPlayer("110-888","Grace");

Team team1=new Team("China");

Team team2=new Team("USA");

TreeMap map=newTreeMap();

map.put(player1, team1);

map.put(player2, team2);

Set set=map.keySet();

for(Player p:set){

System.out.println(map.get(p).getName());

}

}

}

上述代码中将两组键值对存储到了一个TreeMap中,运行结果为:

USA

China

因为Player类的compareTo方法根据Player的id属性的字典顺序进行排序,所以TreeMap也根据Player的id属性的字典顺序排序。

3)Hashtable

Hashtable与Vector类似,也是一个“历史悠久”的类。Hashtable是JDK1.0版本中就存在的类。目前Hashtable实现了Map接口。Hashtable的功能可以完全被HashMap替代,主要区别在于Hashtable是同步对象,而HashMap不是同步的。

4)Properties

Properites类是Hashtable类的子类,所以也间接地实现了Map接口。在实际应用中,常使用Properties类对属性文件进行处理。该功能需要使用到IO包的API,IO相关知识点请参见IO章节。假设有如下属性文件db.properties:

username=root

password=123

可以使用Properties对象的load方法,将属性文件加载到Properties对象中,然后调用Properties对象的getProperty方法通过key值获得对应的value值。如下代码所示:

package com.etc.chapter14;

public class TestProperties {

public static void main(String[] args) {

Properties props=new Properties();

try {

props.load(new FileInputStream(newFile("db.properties")));

System.out.println(props.getProperty("username"));

System.out.println(props.getProperty("password"));

} catch (FileNotFoundException e) {

// TODOAuto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODOAuto-generated catch block

e.printStackTrace();

}}}

运行结果如下:

root

123

Map接口的主要实现类有HashMap、TreeMap、Hashtable、Properties。Map中的key值不能重复,其中TreeMap的key值不仅不重复,而且能根据key值排序。Hashtable类可以完全被HashMap类替代,唯一区别在于Hashtable类是同步的。Properties类主要用于处理属性文件。

好了,这次的内容不知道大家看了以后有没有更加清晰明了一点呢,如果没有,点击官网看更多关于java教程的详细讲解吧。

java教程http://csetc.chinasofti.com/ java教程

java 怎么用 string method return数量_java教程之Map应该怎么用相关推荐

  1. java中的string是什么意思_java中String[][] 是什么东西?string[]又是什么东西?

    展开全部 String[][]是二维数组.例如:String[][] str=new String[4][4],这是创建了一个有4行4列元3231313335323631343130323136353 ...

  2. java中判断string类型的值_java判断对象是否是string类型

    1.instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:result = ...

  3. java的继承实例_java教程之java继承示例详解

    这篇文章主要介绍了java继承示例详解,需要的朋友可以参考下 什么是继承(extends)? 继承是:新定义的类是从已有的类中获取属性和方法的现象. 这个已有的类叫做父类, 从这个父类获取属性和方法的 ...

  4. java中mq组建是什么_Java教程之RabbitMQ介绍

    前言 RabbitMQ是基于AMQP协议(Advanced Message Queue Protocol)的消息中间件. 什么是消息队列 消息队列属于进程间通信的一种方式,使用消息队列可以通过异步方式 ...

  5. java乘以2的位计算符号_java编程之:按位与运算,等运算规则

    按位与运算符(&) 参加运算的两个数据,按二进制位进行"与"运算. 运算规则:0&0=0;   0&1=0;    1&0=0;     1& ...

  6. Java数据库接口JDBC入门基础讲座_JDBC基础教程之CallableStatement

    概述 CallableStatement 对象为所有的 DBMS 提供了一种以标准形式调用已储存过程的方法.已储存过程储存在数据库中.对已储存过程的调用是 CallableStatement对象所含的 ...

  7. java return用法_Java枚举的高级用法之多键值的映射使用

    枚举Enum单映射使用 做Java的各位仁兄姐妹都知道,Java通过HashMap,以及枚举提供了方便的K-V映射功能,例如 枚举单映射使用 但是如果遇到多个键值映射,例如K-K-V的形式怎么办呢?可 ...

  8. java string 字符个数字_java从字符串中提取数字

    string类函数的补充说明: trim()方法返回调用字符串对象的一个副本,但是所有起始和结尾的空格都被删除了,例子如下:String s=" Hello World ".tri ...

  9. c++中string插入一个字符_Java内存管理-探索Java中字符串String(十二)

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 一.初识String类 首先JDK API的介绍: public final class String extends O ...

最新文章

  1. Kali Linux 安全渗透教程第五更1.4 安装Kali Linux
  2. WSUS注冊表導入,工作組用戶系統更新
  3. linux内存使用监控,如何利用Bash脚本监控Linux的内存使用情况
  4. 32个最热CPLD-FPGA论坛
  5. 算法设计与分析——贪心算法——活动安排问题
  6. 用matlab数学综合实验,MATLAB与数学实验(第2版)
  7. js中的date操作
  8. 合肥师范学院计算机与技术,合肥师范学院计算机科学与技术系JAVA复习提纲
  9. java des 加密 字符串_Java使用DES加密字符串
  10. HDU2010 水仙花数【进制】
  11. python函数名的作用_Python:函数名称空间与作用域:
  12. 【语音处理】基于matlab噪声信号功率谱【含Matlab源码 1712期】
  13. afuwin64教程_AMI刷BIOS工具下载|AFUWIN(AMI刷BIOS工具) v4.47官方最新版 附使用教程_星星软件园...
  14. ES3~ES6数组的方法总结
  15. 360自研分布式存储系统Bada的架构设计和应用
  16. 计算机组成原理学习笔记一
  17. 购买2019最佳性价比Android智能手表(smart watch)
  18. Word及Excel文档的Python脚本处理
  19. Redis String命令大全
  20. 计算机硬件加速怎么开,启用硬件加速是什么 是如何进行的【详解】

热门文章

  1. python二级简书_12月4日,总结发现杯,备战python二级
  2. 高德地图跟百度地图经纬度互转
  3. mpvue 从零开始 女友的收纳盒 6 mpvue-entry入口管理
  4. MySQL数据库事务中的行级锁,表级锁,页级锁
  5. mysql实现decode_Oracle中的DECODE()函数,MySQL中怎么实现DECODE()函数
  6. oracle11连12c报权限错误,关于Oracle12c连接报错的问题
  7. 1025. 反转链表 (25)
  8. (JAVA)IO缓冲区
  9. 【Git、GitHub、GitLab】一 Git安装与Git最小配置
  10. 爬虫入门-3.初识BeautifulSoup