如有一个字符串:String target = "java is very good , java ";如何把target中的每个单词统计出来,只能用ArrayList,HashMap的不要。谢谢

解决方案 »

  1.   

    可以用String.split("\\s");
    分割字符串
    或者用正则表达式。我试着写了一个  
    Pattern pattern = Pattern.compile("(?<=\\s*)\\w+(?=(\\s+|\\p{Punct}))");把匹配到的字符串或者分割出来的字符串加到ArrayList里就行了
      

  2.   

    拆分我会,现在的问题是添加到ArrayList之后统计单词时如何去掉统计过的单测?public class ArrayListTest {
    public static void main(String[] agrs) {
     String target = "java is good , java ? ha ha , yes java ";
     String[] strTemp = target.split(" ");
     List<String> ls1 = new ArrayList<String>();
     List<String> ls2 = new ArrayList<String>();
     Iterator it1 = null;
     Iterator it2 = null;
     int i ;
     for(i=0; i<strTemp.length; i++){
     ls1.add(strTemp[i]);
     ls2.add(strTemp[i]);
     }
     it1 = ls1.iterator();
     it2 = ls2.iterator();
     while(it1.hasNext()) {
     i = 0;
     String temp =  (String)it1.next();
     
    /* if(ls1.contains(temp2)) {
     continue ;
     } else {
     temp2 = temp;
     }*/
     while(it2.hasNext()) {
     if(temp.equals(it2.next())) {
     i++;
     }
     }
     it2 = ls2.iterator();
     System.out.print(temp+"="+i+"\t");
     }
    }
    }
    上面的程序打印出来的结果是:
    java=3 is=1 good=1 ,=2 java=3 ?=1 ha=2 ha=2 ,=2 yes=1 java=3
    请问那位高人怎么去掉重复打印次数
      

  3.   

    想了一下,就是有点土,可以随便看看import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    public class ArrayListTest {
    public static void main(String[] agrs) {
     String target = "java is good , yes , java is very good";
     String[] strTemp = target.split(" ");
     List<String> ls1 = new ArrayList<String>();
     List<String> ls2 = new ArrayList<String>();
     List<String> ls3= new ArrayList<String>();
     Iterator it1 = null;
     Iterator it2 = null;
     int i ;
     for(i=0; i<strTemp.length; i++){
     ls1.add(strTemp[i]);
     ls2.add(strTemp[i]);
     }
     it1 = ls1.iterator();
     it2 = ls2.iterator();
     while(it1.hasNext()) {
     i = 0;
     String temp =  (String)it1.next();
     while(it2.hasNext()) {
     if(temp.equals(it2.next())) {
     i++;
     }
     }
     it2 = ls2.iterator();
     if(!(ls3.contains(temp))) {
     ls3.add(temp);
     
     ls3.add(Integer.toString(i));
     }
     }
     System.out.println(ls3);
    }
    }
      

  4.   

    private void test(){ String target = "java is very good , java ";
    String arr[] = target.split("[^a-zA-Z]+");
    ArrayList al = new ArrayList();
    ArrayList alResult = new ArrayList();

    for(int i=0;i<arr.length;i++)al.add(arr[i]);
    for(int i=0;i<al.size();i++){
    if(!alResult.contains(al.get(i))){
    alResult.add(al.get(i));
    alResult.add("1");
    }else{
    int index = alResult.indexOf(al.get(i));
    int len = new Integer(""+alResult.get(index+1)).intValue();
    alResult.remove(index+1);
    alResult.add(index+1,""+(++len));
    }
    }

    for(int i=0;i<alResult.size();i+=2)
    System.out.print(alResult.get(i)+"="+alResult.get(i+1)+"\t");

    }
      

  5.   

    import java.util.ArrayList;
    import java.util.regex.*;public class test {
        public static void main(String[] agrs) {
         String str= "java is good yes java is very good a i love java very much";
         String[] fenge=str.split("[^\\w]");
         System.out.println(fenge.length);
         ArrayList list=new ArrayList();
        
         for (int i=0;i<fenge.length;i++)
         {
         if (list.contains(fenge[i])==false) {
         Pattern pattern=Pattern.compile("\\b"+fenge[i]+"\\b");
         Matcher matcher=pattern.matcher(str);
        
         int nums=0;
         while(matcher.find())
         {
         nums++;
         }
        
         System.out.println(fenge[i]+":"+nums);
         list.add(fenge[i]);
    }
        
         }    }
    }