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应该怎么用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【原创】2021-2001中国科技统计年
- 下一篇: vue 中slot 的具体用法