有一个帖子,楼主提到:
有一个List
内容如下:
a,b,b,b,c,c,d
想通过一种方法得到一个这样的串;
a;b*3;c*2;d
方法是有但是想寻求最简洁的实现。
我是这样做的,感觉还有点意思,拿出来大家分享一下,大家有什么宝贵意见请提出来:
这是打印函数
public static void printSum(ArrayList list){
Collections.sort(list);
String curr="";
String last="";
WordCount wc=null;
for(int i=0;i<list.size();i++){
curr=(String)list.get(i);
if(i==0){
wc=new WordCount(curr,1);
last=curr;
continue;
}
if(curr.equals(last)){
wc.increaseCount();
}
else{
wc.print();
wc.changeWord(curr);
}
last=curr;
}
wc.print();
}
这是WordCount类
public class WordCount{
private String word;
private int count;
public WordCount(String word,int count){
this.word=word;
this.count=count;
}
public void increaseCount(){
count=count+1;
}
public void print(){
System.out.println(word+"*"+count);
}
public void changeWord(String newWord){
word=newWord;
count=1;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
}
这是调用部分:
public static void main(String[] arg){
ArrayList list=new ArrayList();
list.add("a");
list.add("a");
list.add("b");
list.add("c");
list.add("c");
list.add("e");
list.add("天朝");
list.add("天朝");
list.add("天朝");
list.add("鸡屁国");
list.add("南棒棒");
list.add("北棒棒");
list.add("阿妹例假国");
list.add("公鸡国");
list.add("罗撒国");
list.add("阿妹例假国");
list.add("阿妹例假国");
list.add("天朝");
list.add("天朝");
list.add("天朝");
list.add("北棒棒");
printSum(list);
}
输出结果如下:
a*2
b*1
c*2
e*1
公鸡国*1
北棒棒*2
南棒棒*1
天朝*6
罗撒国*1
阿妹例假国*3
鸡屁国*1
