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个年份怎么处理呢? 展开
数组长度不定,现在我要统计他们的个数
例如上面的数组
输出2007:2
2006:3
2008:1
2004:1
1984:1
int a[]= {2007,2008,2006,2004,1984,2007,2006,2006}
数组可能有点麻烦,现在我把这些年全部放入list中了,请问如何能获得我的输出结果?
8vip好像是个好主意,写入MAP中,可是不知道怎么写入效率比较高。
℡玥玥吊 的虽然能出结果 但是不可行,如果有100个年份怎么处理呢? 展开
7个回答
展开全部
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;
}
都说了是整形数组了..还用字符串进行比较呀!!!
呵呵...
祝楼主早日成功哈!!!!
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;
}
都说了是整形数组了..还用字符串进行比较呀!!!
呵呵...
祝楼主早日成功哈!!!!
展开全部
给你说下思路:
先定义一个hashmap,用key存2006,2007等数组的内容,value存个数
比如:hashmap.set('2006',3);
然后用两个for循环遍历数组a,和冒泡法排序的道理是一样的.
只不过冒泡法比较的是大小,我们这里比较是否相等而已,如果相等按数组内容操作hashmap.
另一种思路:
整个HashSet 它本身不能接受重复的内容.
你遍历数据全部加入到hashset中,add方式如果返回true说明加入了,如果返回false说明有重复的了. 这时候你判断下当前要加的值找个东西放进去就可以了
修改:如果真的要说效率的话,我说的第二种方法可以考虑下!
先定义一个hashmap,用key存2006,2007等数组的内容,value存个数
比如:hashmap.set('2006',3);
然后用两个for循环遍历数组a,和冒泡法排序的道理是一样的.
只不过冒泡法比较的是大小,我们这里比较是否相等而已,如果相等按数组内容操作hashmap.
另一种思路:
整个HashSet 它本身不能接受重复的内容.
你遍历数据全部加入到hashset中,add方式如果返回true说明加入了,如果返回false说明有重复的了. 这时候你判断下当前要加的值找个东西放进去就可以了
修改:如果真的要说效率的话,我说的第二种方法可以考虑下!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
输入形式可以进一步改进
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);
}
}
输入形式可以进一步改进
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
刚才写了一个小方法,字符串的,整形数组也可以比较,改一下比较方式就行,都一样
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();
}
}
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();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组还是要做遍历的啊~~
但是遍历后的结果倒是可以做HASHTABLE
但是遍历后的结果倒是可以做HASHTABLE
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询