package day12;
import java.util.Comparator;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
/**
* abaac 输出 a(3) b(1) c(1)
* @author Administrator
*
*/
public class Test {
public static void main(String[] args) {
String str = "aaaabbbccccc";
run(str);
}
private static void run(String str) {
char[] c = str.toCharArray();
String s = "";
TreeMap<String, Integer> tm = new TreeMap<String, Integer>();
for (int i = 0; i < c.length; i++) {
if (!s.contains(String.valueOf(c[i]))) {
s += c[i];
tm.put(String.valueOf(c[i]), 1);
} else {
int value = tm.get(String.valueOf(c[i])) + 1;
tm.put(String.valueOf(c[i]), value);
}
}
Set<Entry<String, Integer>> entrys = tm.entrySet();
TreeSet<Entry<String, Integer>> ts = new TreeSet<Entry<String, Integer>>(
new Comparator<Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> e1,
Entry<String, Integer> e2) {
int num = e1.getValue() - e2.getValue();
if (num != 0) {
return -num;
}
return e1.getKey().compareTo(e2.getKey());
}
});
for (Entry<String, Integer> entry : entrys) {
ts.add(entry);
}
for (Entry<String, Integer> entry : ts) {
System.out.println(entry.getKey() + "=====" + entry.getValue());
}
}
}
找出一个整数数组{2,4,1,4,3,2,4,3,2}出现次数最多的数。
package test;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class Test{
public static void main(String[] args) {
int[] target = { 2, 4, 1, 4, 3, 2, 4, 3, 2 };
TreeSet<Integer> ts = new TreeSet<Integer>();
Arrays.sort(target);
TreeMap<Integer, Integer> tm = new TreeMap<Integer, Integer>();
for (int i = 0; i < target.length; i++) {
if (!ts.contains(target[i])) {
tm.put(target[i], 1);
ts.add(target[i]);
} else {
tm.put(target[i], tm.get(target[i]) + 1);
}
}
Set<Entry<Integer, Integer>> s = tm.entrySet();
TreeSet<Entry<Integer, Integer>> tsN = new TreeSet<Map.Entry<Integer, Integer>>(
new Comparator<Entry<Integer, Integer>>() {
@Override
public int compare(Entry<Integer, Integer> o1,
Entry<Integer, Integer> o2) {
int num = o1.getValue() - o2.getValue();
if (num != 0) {
return -num;
}
return o1.getKey() - o2.getKey();
}
});
for(Entry<Integer, Integer> en:s){
tsN.add(en);
}
int pos = 0;
for (Entry<Integer, Integer> entry : tsN) {
if (entry.getValue() >= pos) {
pos = entry.getValue();
}
if (entry.getValue() < pos) {
break;
}
System.out.println(entry.getKey() + "=====" + entry.getValue());
}
}
}