Map中的方法运用之熟记常用方法
有这样一个问题:给出一组字符串数组,让你计算其中相同字符出现的个数?对于这样可以采用的方法很多,题目要求采用Map中的HashMap来完成,对于Map来说他是保存键值特征的结构数据的,分析题意可以看出,首先字符相同即不重复,也可以说是键唯一,对应的出现的个数,可以理解成键值对中的值,这样就符合了Map的数据处理特征。
题目给出这样一组数据如下:
"java","java","j2ee","ibm","j2ee","ibm","j2em","java"
计算上述相同出现的字符串的个数。实现代码如下:
<span style="font-size:18px;">import java.util.HashMap;
import java.util.Map;
public class HashMapTest {
public static void main(String[] args) {
String str[] ={"java","java","j2ee","ibm","j2ee",
"ibm","j2em","java"};
HashMapTest add=new HashMapTest();
add.addmethod(str);
}</span>
<span style="font-size:18px;">
void addmethod(String[] str){
Map<String, Integer> map=new HashMap<String, Integer>();</span>
<span style="font-size:18px;"> 采用for循环讲数组中元素依次输入。
for (int i = 0; i < str.length; i++) {</span>
<span style="font-size:18px;"> 首先判断此集合中是否存在相同的元素,如果相同将其覆盖,并将对应的value加1,来实现计数;
if (map.containsKey(str[i])) {
map.put(str[i], map.</span><span style="font-size: 18px; font-family: FangSong_GB2312;">get(str[i])</span><span style="font-size:18px;">+1);
}else{</span>
<span style="font-size:18px;"> 首次向map集合中读入时,必然没有相同的字符串,所以value是1,其次是字符串不同的也是1,
<span style="white-space:pre"> </span> 以便在遍历数组时,遇到相同字符串时,计数而顺利执行上面if中的语句,完成计数
map.put(str[i], 1);
}
}</span>
<span style="font-size:18px;"><span style="white-space: pre;"> </span>//enhance-for 方便的输出集合中的键值对。
for (Map.Entry<String, Integer> str2 : map.entrySet()) {
System.out.println(str2);
}
}
}</span>
<span style="font-size:18px;"> 从上述代码中可以使用了</span><span style="font-size: 18px; font-family: FangSong_GB2312;">Map中常用</span><span style="font-family: FangSong_GB2312;"><span style="font-size:18px;">方法:</span></span><span style="font-size: 18px; font-family: FangSong_GB2312;">containsKey(),</span><span style="font-family: FangSong_GB2312; font-size: 18px;">get(),put(),entrySet();</span>
<span style="font-family: FangSong_GB2312; font-size: 18px;">上述四种方法的灵活运用,至关重要。第一个方法来判断集合中是够存在将要输入的元素,get方法用于取出key值对应的value值,后者用于存放相同字符出现的次数。put用于将k-v对存入map中,entrySet用于获得map中的k-v对的映射视图,最后将其按toString方法输出。</span>
<span style="font-family: FangSong_GB2312; font-size: 18px;"> 在刚拿到这个问题时,根据一般思路很难突破,然后就去阅读API找到其方法,思路有所突破。总的来说,要熟记集合中各个接口的常用方法,这样做才能达到事半功倍的作用。</span>
<span style="font-family: FangSong_GB2312; font-size: 18px;">
</span>