按字符出现的个数排序(别人给出的一个面试题,自己没事做做)

package com.test.string;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class testString {

	public static void main(String[] args) {
		testTreemap();

	}

	public static void testTreemap() {
		String s = "h jh 你三上起码ghfhHHH fthrtyh tyhdftetwer艰ih jh jh ";
		String s1 = s.replaceAll("[^a-zA-Z]", "");

		Map<String, Integer> m = new TreeMap<String, Integer>();

		for (int i = 0; i < s1.length(); i++) {
			if (m.containsKey(String.valueOf(s1.charAt(i)))) {
				int n = m.get(String.valueOf(s1.charAt(i)));
				m.put(String.valueOf(s1.charAt(i)), n + 1);
			} else {
				m.put(String.valueOf(s1.charAt(i)), 1);
			}
		}
		Iterator it = m.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry entry = (Map.Entry) it.next();
			Object key = entry.getKey();
			Object value = entry.getValue();
			System.out.print(key + ":");
			System.out.println(value + "次");
		}
            List<Map.Entry<String, Integer>> vlist = new ArrayList<Map.Entry<String, Integer>>(m.entrySet());
		
		Collections.sort(vlist, new Comparator<Map.Entry<String, Integer>>() {
			public int compare(Map.Entry<String, Integer> o1,
					Map.Entry<String, Integer> o2) {
				return (o2.getValue() - o1.getValue());
			}
		});
		for (int i = 0; i < vlist.size(); i++) {
			String id = vlist.get(i).toString();
			System.out.println(id);
		}
	}

}

 

你可能感兴趣的:(java,面试)