第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