java 怎么用 string method return数量_java教程之Map应该怎么用
java教程之Map應(yīng)該怎么用
在自學(xué)或者看java教程的時候,大家多多少少都存在著這樣或者那樣的疑惑,對于這些中軟國際小編一直也在整理,今天為大家獻上的是關(guān)于Map應(yīng)該怎樣去用的一些方法,還是跟過去一樣,在這里,小編提供的希望大家把它看成是思路,在技術(shù)的道路上還是需要不斷的探索,自行研究才能最終體會到這門語言的偉大與迷人之處。
下面言歸正傳:
Map與Collection不同,Map中保存的是鍵值對,Key值不允許重復(fù),而Collection中保存的是單個對象。Map接口中主要的方法有:
(1)V put(K key,V value)
該方法可以將key和value存到Map對象中。如果key已經(jīng)存在,則被覆蓋,返回被覆蓋前的value。如果key不存在,則返回null。
(2)V get(Object key)
該方法可以根據(jù)key值返回對應(yīng)的value。
(3)int size()
返回Map對象中鍵值對的數(shù)量。
(4)Set keySet()
將Map對象中的key值取出,返回到Set對象中。
(5)Collection values()
將Map對象中的value值取出,返回到Collection對象中。
Map是接口,無法直接實例化對象,所以要使用Map必須通過Map的實現(xiàn)類創(chuàng)建對象。下面介紹Map接口的4個主要實現(xiàn)類。
1)HashMap
HashMap是Map類的一個常用實現(xiàn)類,HashMap根據(jù)key值的hashCode和equals方法判斷其是否唯一,與HashSet中保證元素唯一性的方式相同,請參考HashSet章節(jié)。如下代碼所示:
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之間的映射關(guān)系,使用put方法將兩對鍵值對存儲到了一個HashMap對象中。然后通過Map的keySet方法將Map的key值轉(zhuǎn)換為一個Set對象,進一步使用增強for循環(huán),根據(jù)key值迭代所有value值。運行結(jié)果如下:
China
USA
2)TreeMap
TreeMap是Map的一個實現(xiàn)類,不僅能保證Key值唯一,還能根據(jù)key值進行排序。TreeMap的key必須實現(xiàn)Comparable接口,實現(xiàn)compareTo方法。TreeMap根據(jù)compareTo的邏輯,對key進行排序。具體方式與TreeSet的排序邏輯相同,請參考TreeSet章節(jié)。
修改key值的類型Player類,實現(xiàn)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類實現(xiàn)了Comparable接口,覆蓋了compareTo方法,方法中根據(jù)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中,運行結(jié)果為:
USA
China
因為Player類的compareTo方法根據(jù)Player的id屬性的字典順序進行排序,所以TreeMap也根據(jù)Player的id屬性的字典順序排序。
3)Hashtable
Hashtable與Vector類似,也是一個“歷史悠久”的類。Hashtable是JDK1.0版本中就存在的類。目前Hashtable實現(xiàn)了Map接口。Hashtable的功能可以完全被HashMap替代,主要區(qū)別在于Hashtable是同步對象,而HashMap不是同步的。
4)Properties
Properites類是Hashtable類的子類,所以也間接地實現(xiàn)了Map接口。在實際應(yīng)用中,常使用Properties類對屬性文件進行處理。該功能需要使用到IO包的API,IO相關(guān)知識點請參見IO章節(jié)。假設(shè)有如下屬性文件db.properties:
username=root
password=123
可以使用Properties對象的load方法,將屬性文件加載到Properties對象中,然后調(diào)用Properties對象的getProperty方法通過key值獲得對應(yīng)的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();
}}}
運行結(jié)果如下:
root
123
Map接口的主要實現(xiàn)類有HashMap、TreeMap、Hashtable、Properties。Map中的key值不能重復(fù),其中TreeMap的key值不僅不重復(fù),而且能根據(jù)key值排序。Hashtable類可以完全被HashMap類替代,唯一區(qū)別在于Hashtable類是同步的。Properties類主要用于處理屬性文件。
好了,這次的內(nèi)容不知道大家看了以后有沒有更加清晰明了一點呢,如果沒有,點擊官網(wǎng)看更多關(guān)于java教程的詳細講解吧。
java教程http://csetc.chinasofti.com/ java教程
總結(jié)
以上是生活随笔為你收集整理的java 怎么用 string method return数量_java教程之Map应该怎么用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【原创】2021-2001中国科技统计年
- 下一篇: vue 中slot 的具体用法