package util;
import java.util.*;
import net.mindview.util.*;
public class E25_WordsInfo3 {
public static void main(String[] args) {
Map<String,ArrayList<Integer>> stat=new HashMap<String,ArrayList<Integer>>();
int wordCount=0;
for(String word:new TextFile("d:\\test.txt","\\W+")){
ArrayList<Integer> loc=stat.get(word);
if(loc==null){//这个作用是啥?
loc=new ArrayList<Integer>();
stat.put(word, loc);
}
loc.add(++wordCount);
}
System.out.println(stat);
}
}实现统计一篇文章的每个单词出现的位置:
问题:
1:Map中用ArrayList<Integer>是不是因为有重复单词出现,会产生多个位置所以用ArrayList<Integer>。
2:我把null去掉后发现只能统计出首个单词出现的位置,以后还有重复的单词书先则不能统计到其位置,对这个null不是很理解希望大家帮忙解释下
谢谢

解决方案 »

  1.   

    1:Map中用ArrayList <Integer>是不是因为有重复单词出现,会产生多个位置所以用ArrayList <Integer>。 
    是的2:我把null去掉后发现只能统计出首个单词出现的位置,以后还有重复的单词书先则不能统计到其位置,对这个null不是很理解希望大家帮忙解释下 
    因为你是取得了一个WORD后,你要看一下这个WORD是否已经在Map中,如果在则不用重新创建,直接将位置记录,而不存在也就是null,则需要新创建一个并放入Map中