0

文字列が特定のマップにキーを持っているかどうかを確認し、キーを文字列の値に置き換えるコードを作成しました。以下はコードです

            String s ="VamshiKrishnaA";
    Map<String,String> h = new HashMap<String,String>();
    h.put("Vamshi", "89");
    h.put("VamshiKrishnaA","dataDir");
    h.put("VamshiKrishna","dataDira");

    h.put("VamshiK", "krihsn");

    String key="";

    Iterator<String> i =h.keySet().iterator();
    while(i.hasNext()){
        key=i.next();
        if(s.contains(key)){
            s=s.replace(key, h.get(key));
        }
    }
    System.out.println(s);

上記のコードを実行すると、dataDiraA として出力が得られましたが、出力を dataDir にする必要があります。

自動生成されるキーと値の順序を制御することはできません。

この点で助けが必要

4

4 に答える 4

0

equals()代わりに呼び出す必要がありますcontains()

if(s.equals(key))
于 2012-07-30T07:44:37.883 に答える
0

contains() checks for a sub string , where as equals() checks for whole string , and other difference is , contains() takes object of CharSequence class where as equals() takes Object as its parameter !

equals() メソッドの使用 ::

            String s = "VamshiKrishnaA";
        Map<String, String> h = new HashMap<String, String>();
        h.put("Vamshi", "89");
        h.put("VamshiKrishnaA", "dataDir");
        h.put("VamshiKrishna", "dataDira");

        h.put("VamshiK", "krihsn");

        String key = "";

        Iterator<String> i = h.keySet().iterator();
        while (i.hasNext()) {
            key = i.next();
            if (s.equals(key)) {
                //s = s.replace(key, h.get(key));
                System.out.println(h.get(key));
            }


        }
于 2012-07-30T08:05:53.787 に答える
0

たとえば、キーを長さで並べ替える方法がある場合は、提供されたコンパレータを使用してすべてのキーが並べ替えられる TreeMap を見たことがあるかもしれません。

一方、キーがあまりなく、正確な順序がわかっている場合は、LinkedHashMap を使用できます。このようにして、キーは配置した順序で繰り返されます。このような:

String s = "VamshiKrishnaA";
Map<String, String> h = new LinkedHashMap<String, String>();
h.put("VamshiKrishnaA", "dataDir");
h.put("VamshiKrishna", "dataDira");
h.put("VamshiK", "krihsn");
h.put("Vamshi", "89");

for (String key : h.keySet()) {
    if (s.contains(key)) {
        s = s.replace(key, h.get(key));
    }
}
System.out.println(s);
于 2012-07-30T07:48:47.870 に答える