用ArrayList如何拆分字符串并统计出其中每个单词的数目

kuikui06 2007-07-15 01:33:37
如有一个字符串:String target = "java is very good , java ";

如何把target中的每个单词统计出来,只能用ArrayList,HashMap的不要。

谢谢
...全文
756 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
稽姬 2007-07-18
  • 打赏
  • 举报
回复
正则替换 split分割
shan1119 2007-07-18
  • 打赏
  • 举报
回复
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");

}
joejoe1991 2007-07-18
  • 打赏
  • 举报
回复
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]);
}

}

}
}
kuikui06 2007-07-17
  • 打赏
  • 举报
回复
想了一下,就是有点土,可以随便看看

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);
}
}
kuikui06 2007-07-15
  • 打赏
  • 举报
回复
拆分我会,现在的问题是添加到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
请问那位高人怎么去掉重复打印次数
joejoe1991 2007-07-15
  • 打赏
  • 举报
回复
可以用String.split("\\s");
分割字符串
或者用正则表达式。我试着写了一个
Pattern pattern = Pattern.compile("(?<=\\s*)\\w+(?=(\\s+|\\p{Punct}))");

把匹配到的字符串或者分割出来的字符串加到ArrayList里就行了

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧