求一个算法 算出数组中 元素重复次数 并列出重复次数最多的前10项
比如一个数组 {AAA BBB CCC DDD AAA AAA DDD KKK LLL};结果就是列出 AAA 3次 DD2次 这样
因为这个数组内容是计算出来的 所以最初是不知道长度的
所以用了Arraylist
List<String> listofXXX = new ArrayList<String>();
listofXXX.add(XXX);//XXX为变量 计算得出
然后输出里面排名前10次数的元素 并且附上重复次数
非常感谢 --------------------编程问答-------------------- 为什么不用map 很好用 --------------------编程问答-------------------- 所以是预先知道有什么元素的? --------------------编程问答--------------------
不知道的 元素都是算出来的 然后塞到LIST里面的 --------------------编程问答--------------------
HASH MAP吗。。求指点。。 --------------------编程问答-------------------- 看球之余,写个小逻辑,如下:
import java.util.ArrayList;--------------------编程问答--------------------
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
public class Test {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<String,Integer>();
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("a");
list.add("d");
list.add("e");
list.add("c");
list.add("b");
list.add("a");
list.add("a");
//整理每个字符串出现次数
TreeSet<Integer> numset = new TreeSet<Integer>();
for(int i = 0;i < list.size();i++){
int len = list.size();
String s = (String)list.get(i);
Set<String> set = new HashSet<String>();
set.add(s);
list.removeAll(set);
map.put(s, len - list.size());
numset.add(len - list.size());
i = 0;
}
//输出出现次数最多的10个字符串。如果字符串少于10个,则全部输出后终止
List<Integer> nums = new ArrayList<Integer>(numset);
int j = 1;
for(int i = nums.size() - 1; i > 0;i--){
for(String key : map.keySet()){
if(11 == j){
break;
}
if(map.get(key) == nums.get(i)){
System.out.println(key);
j++;
}
}
}
}
}
import java.util.*;--------------------编程问答-------------------- 刚没看清题,参考了下网上关于value的排序,代码如下
public class Test0803 {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<String,Integer>();
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("a");
list.add("d");
list.add("e");
list.add("c");
list.add("b");
list.add("a");
list.add("a");
Iterator<String> ir=list.iterator();
String str=null;
while(ir.hasNext()){
str=ir.next();
if(map.containsKey(str)){
int a=map.get(str);
a++;
map.put(str, a);
}else{
map.put(str, 1);
}
}
System.out.println(map.toString());
}
}
public class Test0803 {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("a");
list.add("d");
list.add("e");
list.add("c");
list.add("b");
list.add("a");
list.add("a");
Iterator<String> ir = list.iterator();
String str = null;
while (ir.hasNext()) {
str = ir.next();
if (map.containsKey(str)) {
int a = map.get(str);
a++;
map.put(str, a);
} else {
map.put(str, 1);
}
}
ArrayList<Entry<String, Integer>> l = new ArrayList<Entry<String, Integer>>(
map.entrySet());
Collections.sort(l, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1,
Map.Entry<String, Integer> o2) {
return (o2.getValue() - o1.getValue());
}
});
if (map.size() < 10)
System.out.println(map.keySet());
else {
for (int i = 0; i < 10; i++) {
System.out.println(l.get(i).getKey() + ":"
+ l.get(i).getValue());
}
}
}
}
补充:Java , Java SE