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

现在有一个数组a[]={2007,2008,2006,2004,1984,2007,2006,2006}数组长度不定,现在我要统计他们的个数例如上面的数组输出2007:2... 现在有一个数组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个年份怎么处理呢?
展开
 我来答
韦涵涵
2009-04-15 · TA获得超过3892个赞
知道大有可为答主
回答量:1034
采纳率:100%
帮助的人:1512万
展开全部
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;
}

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

呵呵...

祝楼主早日成功哈!!!!
8vip
2009-04-15 · TA获得超过329个赞
知道小有建树答主
回答量:339
采纳率:0%
帮助的人:404万
展开全部
给你说下思路:
先定义一个hashmap,用key存2006,2007等数组的内容,value存个数
比如:hashmap.set('2006',3);
然后用两个for循环遍历数组a,和冒泡法排序的道理是一样的.
只不过冒泡法比较的是大小,我们这里比较是否相等而已,如果相等按数组内容操作hashmap.

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

修改:如果真的要说效率的话,我说的第二种方法可以考虑下!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
knightzhuwei
2009-04-15 · TA获得超过1万个赞
知道大有可为答主
回答量:2440
采纳率:0%
帮助的人:1994万
展开全部
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);
}
}

输入形式可以进一步改进
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wmysky
2009-04-15
知道答主
回答量:13
采纳率:0%
帮助的人:0
展开全部
刚才写了一个小方法,字符串的,整形数组也可以比较,改一下比较方式就行,都一样
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();

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iamXiaMi
2009-04-15 · TA获得超过1711个赞
知道大有可为答主
回答量:2734
采纳率:0%
帮助的人:2257万
展开全部
数组还是要做遍历的啊~~

但是遍历后的结果倒是可以做HASHTABLE
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式