thinking in java -第11章持有对象-练习25

统计一段文本中,每个单词出现的位置,用map实现,key是单词,value是单词位置的list。

package collection.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TestMap {
    public static void statistics(Map<String, ArrayList<Integer>> map,
            List<String> list) {

        for (int i = 0; i < list.size(); i++) {
            if (map.containsKey(list.get(i))) {
                ArrayList<Integer> postiArrayList = map.get(list.get(i));
                postiArrayList.add(new Integer(i));
                map.put(list.get(i), postiArrayList);
            } else {
                ArrayList<Integer> postiArrayList = new ArrayList<Integer>();
                postiArrayList.add(new Integer(i));
                map.put(list.get(i), postiArrayList);
                // System.out.println(map);
            }
        }
    }

    public static void main(String[] args) {
        Map<String, ArrayList<Integer>> map = new HashMap<String, ArrayList<Integer>>();
        statistics(map,
                Arrays.asList("i am sunny hello world i am kitty hello kitty"
                        .split(" ")));
        System.out.println(map);

    }
}

 测试结果:

{hello=[3, 8], sunny=[2], am=[1, 6], kitty=[7, 9], world=[4], i=[0, 5]}

posted @ 2012-08-26 18:51  sunnyfan  阅读(255)  评论(0)    收藏  举报