java判断数组中相同字符串的个数

现在有一个数组a[]= {2007,2008,2006,2004,1984,2007,2006,2006}

数组长度不定,现在我要统计他们的个数

例如上面的数组

输出2007:2
2006:3
2008:1
2004:1
1984:1
int a[]= {2007,2008,2006,2004,1984,2007,2006,2006}

数组可能有点麻烦,现在我把这些年全部放入list中了,请问如何能获得我的输出结果?

8vip好像是个好主意,写入MAP中,可是不知道怎么写入效率比较高。

℡玥玥吊 的虽然能出结果 但是不可行,如果有100个年份怎么处理呢?

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class GetNum {

public static void main(String[] args) {

int a[]={2007,2008,2006,2004,1984,2007,2006,2006};
List<Num> list=new ArrayList<Num>();

for(int i=0;i<a.length;i++){
if(!isExist(a[i],list)){
Num n=new Num();
n.num=a[i];
n.n=1;
list.add(n);
}
}

for(Iterator<Num> it=list.iterator();it.hasNext();){
Num nu=it.next();
System.out.println(nu.num+":"+nu.n);
}

}
public static boolean isExist(int num,List<Num> list){
boolean b=false;
for(Iterator<Num> it=list.iterator();it.hasNext();){
Num nu=it.next();
if((nu.num==num)){
nu.n++;
b=true;
break;
}
}
return b;
}

}
class Num{
public int num;
public int n;
}

都说了是整形数组了..还用字符串进行比较呀!!!

呵呵...

祝楼主早日成功哈!!!!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-15
给你说下思路:
先定义一个hashmap,用key存2006,2007等数组的内容,value存个数
比如:hashmap.set('2006',3);
然后用两个for循环遍历数组a,和冒泡法排序的道理是一样的.
只不过冒泡法比较的是大小,我们这里比较是否相等而已,如果相等按数组内容操作hashmap.

另一种思路:
整个HashSet 它本身不能接受重复的内容.
你遍历数据全部加入到hashset中,add方式如果返回true说明加入了,如果返回false说明有重复的了. 这时候你判断下当前要加的值找个东西放进去就可以了

修改:如果真的要说效率的话,我说的第二种方法可以考虑下!
第2个回答  2009-04-15
import java.util.HashMap;
public class MapTest {
public static void main(String[] args) {
int a[]= {2007,2008,2006,2004,1984,2007,2006,2006};
HashMap<String, String> hm=new HashMap<String, String>();
for(int i=0;i<a.length;i++){
if(hm.get(""+a[i])==null){
hm.put(a[i]+"",1+"");
}else{
int count=Integer.parseInt(hm.get(""+a[i]))+1;
hm.put(a[i]+"",count+"");
}
}
System.out.println(hm);
}
}

输入形式可以进一步改进
第3个回答  2009-04-15
刚才写了一个小方法,字符串的,整形数组也可以比较,改一下比较方式就行,都一样
import java.util.ArrayList;
import java.util.List;

public class Test {

public void findNumber() {
String a[] = { "2007", "2008", "2006", "2004", "1984", "2007", "2006",
"2006" };
String b[] = new String[a.length];
List list = new ArrayList();
String strTemp = "";
String result = "";
int count = 0;
boolean exist = false;
for (int i = 0; i < a.length; i++) {
count = 0;
exist = false;
strTemp = a[i];
for (int k = 0; k < b.length; k++) {
if (strTemp.equals(b[k])) {
exist = true;
}
}
if (exist) {
break;
}
b[i] = strTemp;
for (int j = 0; j < a.length; j++) {
if (strTemp.equals(a[j])) {
count++;
}
}
result = strTemp + ":" + count;
System.out.println(result);
}
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t = new Test();
t.findNumber();

}

}
第4个回答  2009-04-15
数组还是要做遍历的啊~~

但是遍历后的结果倒是可以做HASHTABLE