java 怎么用 string method return数量_java教程之Map应该怎么用
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应该怎么用相关推荐
- java中的string是什么意思_java中String[][] 是什么东西?string[]又是什么东西?
展开全部 String[][]是二维数组.例如:String[][] str=new String[4][4],这是创建了一个有4行4列元3231313335323631343130323136353 ...
- java中判断string类型的值_java判断对象是否是string类型
1.instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:result = ...
- java的继承实例_java教程之java继承示例详解
这篇文章主要介绍了java继承示例详解,需要的朋友可以参考下 什么是继承(extends)? 继承是:新定义的类是从已有的类中获取属性和方法的现象. 这个已有的类叫做父类, 从这个父类获取属性和方法的 ...
- java中mq组建是什么_Java教程之RabbitMQ介绍
前言 RabbitMQ是基于AMQP协议(Advanced Message Queue Protocol)的消息中间件. 什么是消息队列 消息队列属于进程间通信的一种方式,使用消息队列可以通过异步方式 ...
- java乘以2的位计算符号_java编程之:按位与运算,等运算规则
按位与运算符(&) 参加运算的两个数据,按二进制位进行"与"运算. 运算规则:0&0=0; 0&1=0; 1&0=0; 1& ...
- Java数据库接口JDBC入门基础讲座_JDBC基础教程之CallableStatement
概述 CallableStatement 对象为所有的 DBMS 提供了一种以标准形式调用已储存过程的方法.已储存过程储存在数据库中.对已储存过程的调用是 CallableStatement对象所含的 ...
- java return用法_Java枚举的高级用法之多键值的映射使用
枚举Enum单映射使用 做Java的各位仁兄姐妹都知道,Java通过HashMap,以及枚举提供了方便的K-V映射功能,例如 枚举单映射使用 但是如果遇到多个键值映射,例如K-K-V的形式怎么办呢?可 ...
- java string 字符个数字_java从字符串中提取数字
string类函数的补充说明: trim()方法返回调用字符串对象的一个副本,但是所有起始和结尾的空格都被删除了,例子如下:String s=" Hello World ".tri ...
- c++中string插入一个字符_Java内存管理-探索Java中字符串String(十二)
做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 一.初识String类 首先JDK API的介绍: public final class String extends O ...
最新文章
- Kali Linux 安全渗透教程第五更1.4 安装Kali Linux
- WSUS注冊表導入,工作組用戶系統更新
- linux内存使用监控,如何利用Bash脚本监控Linux的内存使用情况
- 32个最热CPLD-FPGA论坛
- 算法设计与分析——贪心算法——活动安排问题
- 用matlab数学综合实验,MATLAB与数学实验(第2版)
- js中的date操作
- 合肥师范学院计算机与技术,合肥师范学院计算机科学与技术系JAVA复习提纲
- java des 加密 字符串_Java使用DES加密字符串
- HDU2010 水仙花数【进制】
- python函数名的作用_Python:函数名称空间与作用域:
- 【语音处理】基于matlab噪声信号功率谱【含Matlab源码 1712期】
- afuwin64教程_AMI刷BIOS工具下载|AFUWIN(AMI刷BIOS工具) v4.47官方最新版 附使用教程_星星软件园...
- ES3~ES6数组的方法总结
- 360自研分布式存储系统Bada的架构设计和应用
- 计算机组成原理学习笔记一
- 购买2019最佳性价比Android智能手表(smart watch)
- Word及Excel文档的Python脚本处理
- Redis String命令大全
- 计算机硬件加速怎么开,启用硬件加速是什么 是如何进行的【详解】
热门文章
- python二级简书_12月4日,总结发现杯,备战python二级
- 高德地图跟百度地图经纬度互转
- mpvue 从零开始 女友的收纳盒 6 mpvue-entry入口管理
- MySQL数据库事务中的行级锁,表级锁,页级锁
- mysql实现decode_Oracle中的DECODE()函数,MySQL中怎么实现DECODE()函数
- oracle11连12c报权限错误,关于Oracle12c连接报错的问题
- 1025. 反转链表 (25)
- (JAVA)IO缓冲区
- 【Git、GitHub、GitLab】一 Git安装与Git最小配置
- 爬虫入门-3.初识BeautifulSoup