3

2 つの ArrayList があります。

  • 最初のものには、大文字と句読点を含む単語のグループが含まれています。

  • もう一方には、これと同じ単語グループが含まれていますが、大文字と句読点が削除されています。

.

ArrayList1 ..... ArrayList2

MURDER! ........ murder

It's ........... its

Hello .......... hello

Yes-Man ........ yesman

ON ............. on

2 番目の配列には、すべての単語がアルファベット順に並べられ、各単語のすべての文字がアルファベット順に並べられています。次のようになります。

aemnsy
demrru
ehllo
ist
no

ArrayList 2 の単語をアルファベット順に並べると、ArrayList 1 のすべての単語がスイートに従うようにしたいと考えています。

ArrayList1 ..... ArrayList2

Yes-Man ........ aemnsy

MURDER! ........ demrru

Hello .......... ehllo

It's ........... ist

ON ............. no

for文を1つか2つ使ってループさせようとしたのですが、うまくいかず、とても長くなってしまいました。どうすればいいですか?これを効率的に行うにはどうすればよいですか?

4

5 に答える 5

4

最初の方法 - キーが arrayList2 からのもので、値が arrayList1 からのものであるマップを使用します。データをマップに入れるのはあなた次第です。arrayList2 を並べ替えた後、その値をマップから取得します。

  List<String> arrList1 = new ArrayList<String>();

            arrList1.add("MURDER!");
            arrList1.add("It's");
            arrList1.add("Hello");
            arrList1.add("Yes-Man");
            arrList1.add("ON");

            List<String> arrList2 = new ArrayList<String>();
            arrList2.add("demrru");
            arrList2.add("aemnsy");
            arrList2.add("ist");
            arrList2.add("ehllo");
            arrList2.add("no"); 

            Map<String, String> map1 = new HashMap<String, String>();
            map1.put("aemnsy", "Yes-Man");
            map1.put("demrru", "MURDER!");
            map1.put("ehllo", "Hello");
            map1.put("ist", "It's");
            map1.put("no", "ON");

            Collections.sort(arrList2);

            for (String s : arrList2){
                System.out.println(s + "..........." + map1.get(s));
            }

2 番目の方法 - もう 1 つの方法は、2 つの ArrayList の代わりに、既にソートされている TreeMap のみを使用できることです。

Map<String, String> map2 = new TreeMap<String, String>();
            map2.put("ehllo", "Hello");
            map2.put("aemnsy", "Yes-Man");
            map2.put("demrru", "MURDER!");
            map2.put("no", "ON");
            map2.put("ist", "It's");

            for (Map.Entry<String, String> entry : map2.entrySet())
            {
                System.out.println(entry.getKey() + "/" + entry.getValue());
            }

3 番目の方法 - 2 つの ArrayList のみを使用しますが、独自の並べ替えメソッドを作成する必要があります。arrayList2 の aemnsy と arrayList1 の Yes-Man などの 2 つの ArrayList 要素のインデックスが同じであることに気付きましたか? そのポイントを利用しています。

  selectionSort1(arrList2, arrList1);

    for(int i = 0; i < arrList1.size(); i++){
        System.out.println(arrList2.get(i) + "---" + arrList1.get(i));
    }

   public static void selectionSort1(List<String> x, List<String> y) {
    for (int i=0; i<x.size()-1; i++) {
        for (int j=i+1; j<x.size(); j++) {
            if (x.get(i).compareTo(x.get(j)) > 0) {
                //... Exchange elements in first array
                String temp = x.get(i);
                x.set(i, x.get(j));
                x.set(j, temp);

                //... Exchange elements in second array
                temp = y.get(i);
                y.set(i, y.get(j));
                y.set(j, temp);
            }
        }
    }
}
于 2013-03-14T03:43:10.400 に答える
0

クイックアンサー。

public class MapAlph {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<String, String>();
        String txt = "Murde!r!";
        ArrayList<Character> alph = new ArrayList<Character>();
        for (int i = 0; i < txt.length(); i++)
            if (Character.isLetter(txt.charAt(i)))
                alph.add(txt.charAt(i));

        Collections.sort(alph);
        Collections.reverse(alph);
        String val = "";
        for (Character c : alph)
            val += c;

        map.put(txt, val);
        System.out.print(txt + " ........ " + map.get(txt));
    }
}
于 2013-03-14T03:47:10.917 に答える
0

必要に応じて利用できTreeMapます。

Map<String, String> sortedMap = new TreeMap<String, String>();
sortedMap.put("demrru", "MURDER!");
sortedMap.put("ist", "It's");
sortedMap.put("aemnsy", "Yes-Man");
sortedMap.put("ehllo", "Hello");
sortedMap.put("no", "ON");
于 2013-03-14T03:52:01.580 に答える
-1

これを試すことができます:

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;


public class SortService {

    public static void main(String[] args) {
        Map<String, String> originalMap = new HashMap<String, String>();
        originalMap.put("aemnsy", "Yes-Man");
        originalMap.put("demrru", "MURDER!");
        originalMap.put("ehllo", "Hello");
        originalMap.put("ist", "It's");
        originalMap.put("no", "ON");

        Map<String, String> sortedMap = new TreeMap<String, String>(originalMap);
        System.out.println(sortedMap);
    }

}

出力:

{aemnsy=Yes-Man, demrru=MURDER!, ehllo=Hello, ist=It's, no=ON}
于 2013-03-14T03:57:39.427 に答える