谁能讲解下统计“a,b,c,a,a,b,上海,上海”的思路 遍历一遍吧,每次遍历前先判断集合中是否存在该key,如果有了则将value值+1时间效率 O(n)最直观的算法,坐等楼下更快的算法~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在csdn包下,写了一个,参考一下吧。。期待更好的方法package csdn;import java.util.HashSet;import java.util.LinkedHashMap;import java.util.Map;import java.util.Scanner;import java.util.Set;public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Set<String> set = new HashSet<String>(); Map<String,Integer> map = new LinkedHashMap<String, Integer>(); String str; Scanner sc = new Scanner(System.in); str = sc.next(); String t[] = str.split(","); for(String s :t){ if(!set.add(s)){//不能添加成功说明set中已经有了 map.put(s, map.get(s)+1); }else{ map.put(s, 1); } } for(String key : map.keySet()){ System.out.println(key + ":"+ map.get(key)); } }} 运行时在控制台输入“a,b,c,a,a,b,上海,上海”即可。用LinkedHashMap是保证你字母的顺序,如果不想用那就换成HashMap吧。还有就是for循环里面if else可以反过来写阅读性更好一点。。 运行时在控制台输入“a,b,c,a,a,b,上海,上海”即可。用LinkedHashMap是保证你字母的顺序,如果不想用那就换成HashMap吧。还有就是for循环里面if else可以反过来写阅读性更好一点。。期待更优的办法 最好的办法是使用HashMap实现.注:HashSet是基于HashMap的实现.具体可看JDK源码.HashMap的实现就比较简单了.主体代码如下:public void main(String[] args){ String[] arr = new String[]{"a","b","c","a","a","上海","上海"}; Map<String,Integer> map = new HashMap<String,Integer>(); for(String str : arr){ if(map.containsKey(str)){ map.put(str, map.get(str)+1); }else{ map.put(str, 1); } }} +1说好的让用HashSet实现呢? import java.util.HashSet;import java.util.Set;import java.util.regex.Matcher;import java.util.regex.Pattern;public class TotalCount { public static void main(String[] args) { String abc = "a,b,c,a,a,b,上海,上海"; String[] a = abc.split(","); String temp = ""; Set sets = new HashSet(); for (int i = 0; i < a.length; i++) { if (!temp.equals(a[i])) { temp = a[i]; Pattern pt = Pattern.compile(a[i]); Matcher m = pt.matcher(abc); int index = 0; while (m.find()) { index++; } sets.add(a[i]+":"+index);//利用set中不允许有重复项,让JVM自动处理 } } System.out.println(sets.toString()); }}输出结果:[b:2, c:1, 上海:2, a:3] 自己打包的exe文件 360误检测文件包括木马病毒如何处理 如何用JAVA监听键盘输入啊。并写入到TXT文件。 C/S结构的PMI实现 判断 VOID 是否执行 求助,不知道该如何问了!!!!!!!!!!!!!!!! 求助,怎么判断按钮被按下 急求数据结构与算法分析(java)中文电子版 滚动条问题? 急问:从ftp取文件用什么方法比较好? 请问各位大虾,怎样在java里打开一个IE窗口。 为什么没结果 JDK无法安装
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;public class Test { public static void main(String[] args) {
// TODO Auto-generated method stub
Set<String> set = new HashSet<String>();
Map<String,Integer> map = new LinkedHashMap<String, Integer>();
String str;
Scanner sc = new Scanner(System.in);
str = sc.next();
String t[] = str.split(",");
for(String s :t){
if(!set.add(s)){//不能添加成功说明set中已经有了
map.put(s, map.get(s)+1);
}else{
map.put(s, 1);
}
}
for(String key : map.keySet()){
System.out.println(key + ":"+ map.get(key));
}
}}
还有就是for循环里面if else可以反过来写阅读性更好一点。。
还有就是for循环里面if else可以反过来写阅读性更好一点。。
期待更优的办法
注:HashSet是基于HashMap的实现.具体可看JDK源码.
HashMap的实现就比较简单了.主体代码如下:public void main(String[] args){
String[] arr = new String[]{"a","b","c","a","a","上海","上海"};
Map<String,Integer> map = new HashMap<String,Integer>();
for(String str : arr){
if(map.containsKey(str)){
map.put(str, map.get(str)+1);
}else{
map.put(str, 1);
}
}
}
+1
说好的让用HashSet实现呢?
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class TotalCount {
public static void main(String[] args) {
String abc = "a,b,c,a,a,b,上海,上海";
String[] a = abc.split(",");
String temp = "";
Set sets = new HashSet();
for (int i = 0; i < a.length; i++) {
if (!temp.equals(a[i])) {
temp = a[i];
Pattern pt = Pattern.compile(a[i]);
Matcher m = pt.matcher(abc);
int index = 0;
while (m.find()) {
index++;
}
sets.add(a[i]+":"+index);//利用set中不允许有重复项,让JVM自动处理
}
}
System.out.println(sets.toString());
}
}输出结果:[b:2, c:1, 上海:2, a:3]