程序:
package map1;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class T1 {
public static void main(String args[]) {
HashMap hashmap = new HashMap();
hashmap.put("dog", "犬");
hashmap.put("rabbit", "兎");
hashmap.put("cat", "貓");
hashmap.put("bug", "蟲");
hashmap.put("chicken", "鶏");
hashmap.put("cattle", "牛");
hashmap.put("pig", "豚");
Set set = hashmap.entrySet();
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Map.Entry mapentry = (Map.Entry) iterator.next();
System.out.println(mapentry.getKey() + "==" + mapentry.getValue());
}
}
}
運行結果:chicken/鶏
rabbit/兎
cat/貓
bug/蟲
cattle/牛
dog/犬
pig/豚
分析:
HashMap實際上是一種數據結構,數據按照操作系統設定的順序進行存放。
put(K key, V value)
方法就是存入數據的方法。key相當于一個名字,value就是其對應的內容。當調用get(Object key)
方法時,將得到其value。hashmap.entrySet()(Set化)可以說是將其對象化,它就不再是一種結構,而成了數據。
set.iterator()(迭代化)就是對數據進行管理,相當于是給它添加了指針,用戶就可以對數據進行查找和刪除。
例二:
程序:
package map1;
public class T2 {
public static void main(String args[]) {
String[] colors = {
"白","黒","黃","水色","赤","灰色","紫","オリーブ","栗色"
};
System.out.print("今日、君と似合う服の色は"+colors[(int)(colors.length*Math.random())]+"です。");
}
}
運行結果(這只是隨機產生的結果中的一個):
今日、君と似合う服の色はオリーブです。
Math.random())方法產生的將是一個0~1之間的double型的數,將它與colors.length(字符串長度)相乘可以確保產生的是在數組下標范圍內的數。
例三:
程序:
public class T3 {
public static void main(String args[]) {
String[] strings = {"yanlanzhen", "zhaoweidong", "xiexiaojing",
"liuxuebing", "zhaoyang", "liupengfei"};
String temporary = null;
for (int j =strings.length-1; j>0; j--) {
for (int i = 0; i < j; i++) {
if (strings[i].compareTo(strings[i + 1]) <= 0) {
temporary = strings[i];
strings[i] = strings[i + 1];
strings[i + 1] = temporary;
}
}
}
for (int i = 0; i < strings.length; i++) {
System.out.print("\""+strings[i]+"\"" + " ");
}
}
}
運行結果:
"zhaoyang" "zhaoweidong" "yanlanzhen" "xiexiaojing" "liuxuebing" "liupengfei"
分析:
這是對字符串進行直接插入排序的程序,可以在這個程序中將前兩個用到的方法綜合運用,不妨試一下?
我是這樣想的:
綜合的例子:
package map1;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class T123 {
public static void main(String args[]) {
ArrayList<String> strings = new ArrayList<String>();
strings.add("yanlanzhen");
strings.add("zhaoweidong");
strings.add("xiexiaojing");
strings.add("liuxuebing");
strings.add("zhaoyang");
strings.add("liupengfei");
String temporaryS = null;
int temporaryI = 0;
String[] rStrings = new String[6];
HashMap hashmap = new HashMap();
for (int i = 0; i < strings.size(); i++) {
hashmap.put(strings.get(i), i+"");
}
Set set = hashmap.entrySet();
Iterator iterator = set.iterator();
System.out.print("HashMapにある順番は ");
while (iterator.hasNext()) {
Map.Entry mapentry = (Map.Entry) iterator.next();
System.out.print(mapentry.getValue() + " ");
}
for (int j = strings.size(); j > 0; j--) {
temporaryI = (int) (j * Math.random());
rStrings[j - 1] = strings.get(temporaryI);
strings.remove(temporaryI);
}
System.out.print("\nランダム化後の順番は ");
for (int i = 0; i < rStrings.length; i++) {
System.out.print(hashmap.get(rStrings[i]) + " ");
}
for (int j = rStrings.length - 1; j > 0; j--) {
for (int i = 0; i < j; i++) {
if (rStrings[i].compareTo(rStrings[i + 1]) <= 0) {
temporaryS = rStrings[i];
rStrings[i] = rStrings[i + 1];
rStrings[i + 1] = temporaryS;
}
}
}
System.out.print("\nソートされた順番は ");
for (int i = 0; i < rStrings.length; i++) {
System.out.print(hashmap.get(rStrings[i])+" ");
}
}
}
運行結果:
HashMapにある順番は 0 3 1 2 5 4
ランダム化後の順番は 5 2 3 1 4 0
ソートされた順番は 4 1 0 2 3 5