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教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 ExecuteMultiple 提高批量数据加载的性能

您可以使用 ExecuteMultipleRequest 消息在 Microsoft Dynamics CRM Online 2016 Update 和 Microsoft Dynamics CRM 2016(本地) 中(尤其在 Internet 延迟可能是最大限制因素的 Microsoft Dynamics CRM Online 中)支持更高吞吐批量…

安装ODIS报错 java_(实用技术)大众奥迪ODIS常见问题处理方法

我们在平时使用ODIS过程中常常会遇到一下问题,导致我们不知道应该怎么处理。今天这篇文章中我们将陈列一些常见的问题解答,希望对大家有帮助。一、BCM(BFM)的引导型功能不能用解决方案如果桑塔纳,Rapid,新polo等车型遇到BCM(BFM)的…

gulp入坑系列(1)——安装gulp

前言 好吧,我承认我是为了搞定Sass编译CSS文件的问题,迷一样的着手入gulp的坑,sass和gulp的爬坑历程大概会一起更新。然后感觉这里windows和mac的流程差不多,不过mac的通常在指令前加sudo ,本喵是windows的本本&#x…

java中的sql语句书写_Java中sql语句之通配符*

在java中执行SQL语句要特别注意通配符的问题,否则是不会成功的:在ACCESS中的通配符是*例:select * from student where name like 张*在标准的SQL语言中的通配符是%例:select * from student where name like 张%在java…

Oracle 数据库中对记录进行分页处理

学习到 oracle 的视图的时候,了解到对 Oracle 中数据的记录进行分页处理和 Mysql 提供的 limit 来进行分页处理大有不同,limit 是 mysql 中特有的关键字。 那么在 oracle 中如何实现对记录的分页处理呢? 解决办法:使用 ROWNUM 1.…

python中split啥意思_python中split的用法详解_后端开发

如何用python正则表达式匹配字符串?_后端开发用python正则表达式匹配字符串的方法:1、当匹配单个位置的字符串时,可以使用【(.?)】正则表达式来提取;2、当连续多个位置的字符串匹配时,可以使用【?P…】这个正则表达式…

sublimeText OmniMarkupPreviewer 404

这个错误也是出现的莫名奇妙。 "Error: 404 Not Found Sorry, the requested URL http://127.0.0.1:51004/view/29 caused an error:buffer_id(29) is not valid (closed or unsupported file format)NOTE: If you run multiple instances of Sublime Text, you may want …

python写的程序怎么打包成exe_python--- 如何将自己的程序打包成exe ?

最近用python Tkinter 写了一个看stock的小工具.. . 把它调节成半透明悬浮 你懂得但是每次总用pycharm 或者调python去加载使用多少有些不便,如何打包成exe成了问题。百度一下找了 pyinstaller 感觉使用起来还不错。步骤如下:1.官网下载对应的pyins…

spring定时器,定时器一次执行两次的问题

Spring 定时器 方法一:注解形式 配置文件头加上如下: xmlns:task"http://www.springframework.org/schema/task"http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd 需要 quartz 包 &l…

python处理实例_python处理xml实例

"""Author zyhFileName read_xml_1.pyTime 18-9-26 下午5:19"""from xml.etree import ElementTreeimport ospath (/home/zyh/Desktop/xml17)xml_file_list os.listdir(path)print(xml_file_list)read_list []with open(./riskCar_pic.txt…

SQLite For .Net 已经整合了32位和64位

以前引用SQLite.DLL的时候,如果是winform等桌面程序,还要分32位和64位不一样的DLL,但最近已经整合为一个包了 打开vs的程序包管理器控制器,输入: install-package system.data.sqlite 自动安装即可。 转载于:https:/…

21天通关python 磁力_python 磁力链接搜索器

标签:API作者的 原文 : http://blog.163.com/lixiangqiu_9202/blog/static/535750372014370156424/我看到这个API之后第一个想法就是用python写个小玩意儿1 importrequests2 importjson3 importos4 importcodecs5 importsys67 sys.setrecursionlimit(100…

Java名字的由来

Java语言的历程丰富多彩,被现在众多程序员和企业广泛使用,不用质疑这是Java的领先技术的结果。 Java是Sun公司开发的一种编程语言,Sun公司最初的方向是让Java来开发一些电器装置程序,如:机顶盒、公交卡,Sun…

java socket 重连复用_Java Socket编程基础及深入讲解(示例代码)

Socket是Java网络编程的基础,了解还是有好处的,这篇文章主要讲解Socket的基础编程。Socket用在哪呢,主要用在进程间,网络间通信。本篇比较长,特别做了个目录:一、Socket通信基本示例这种模式是基础&#xf…

Leetcode 279. Perfect Square

Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n. For example, given n 12, return 3 because 12 4 4 4; given n 13, return 2 because 13 4 9. 这道题首先想到的算法是DP。每个perfec…

php文件解锁,php文件锁怎么用

php文件锁怎么用PHP出现文件锁与mysql表锁有大概想的用法,就是同一时间只能让一个人操作,这样就避免了同时有多个人操作同一文件,这样导致数据丢失的情况了。以下是小编为大家搜索整理的PHP文件锁怎么用,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生…

zblog php 外部调用,ZBlogPHP调用指定ID文章的代码GetPost()函数

在zblog主题开发中,我们最常用到的就是文章的调用了,毕竟不管是首页还是内页基本都离不开文章,下面这段代码是用来调用指定ID的文章的代码,一般常用在文章推荐这样的布局当中。用到的函数:GetPost()$aritcle GetPost(…

php 自带缓存,封装ThinkPhP自带的缓存机制

namespace Home\Controller;use Think\Controller;use Think\Think;/*** param string $cache_folder 缓文件夹* param int $cache_create_time 文件缓存时间* example $cache->read_cache() 读取缓存并输出* example $cache->create_cache() 创建缓存文件(放在文件未尾)…

等高线的认识

contour: 轮廓;等高线。是三维图像信息在二维坐标平面上的投影。但其仍维护着三维信息,比如使用特殊的颜色标出(不同高度含义的曲线)。 1. 等高线的意义 利用 xy 平面内的等高线,可以给出函数 uf(x,y) 的另…

java替换list中元素,Java 实例 - List 元素替换

以下实例演示了如何使用 Collections 类的 replaceAll() 来替换List中所有的指定元素: /*author by shouce.renMain.java*/import java.util.*;public class Main {public static void main(String[] args) {List list Arrays.asList("one Two three Four fiv…