java统计List中的元素重复出现的次数和对map按key或键值排序

package cn.php;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class CountList {
	public static void main(String[] args) {
		List<String> strs = Arrays.asList("a", "b", "c", "d", "e", "a", "a",
				"a", "a", "b", "b", "b");
		Map<String, Integer> map = new HashMap<String, Integer>();
		Set<String> set = new HashSet<String>(strs);
		for (String str : set) {
			for (String lstr : strs) {
				if (str.equals(lstr)) {
					if (map.containsKey(str)) {
						Integer count = map.get(str);
						count++;
						map.put(str, count);
					} else {
						map.put(str, 1);
					}

				}
			}
		}
		//printMap(map);
		Map<String, Integer> sortMap = sortMapByValue(map);
		printMap(sortMap);
	}

	private static Map<String,Integer> sortMapByValue(Map<String, Integer> map) {
		List<Map.Entry<String, Integer>> mapList = new ArrayList<Map.Entry<String, Integer>>(
				map.entrySet());
		Collections.sort(mapList, new Comparator<Map.Entry<String, Integer>>() {
			@Override
			public int compare(Entry<String, Integer> o1,
					Entry<String, Integer> o2) {
				return o1.getValue()-o2.getValue();
			}
		});
		Map<String,Integer> result = new LinkedHashMap<String,Integer>();
		for(Map.Entry<String, Integer> entry:mapList){
			result.put(entry.getKey(), entry.getValue());
		}
		return result;
	}

	public static void printMap(Map<String, Integer> map) {

		for (Map.Entry<String, Integer> entry : map.entrySet()) {
			System.out.println("Key : " + entry.getKey() + " Value : "
					+ entry.getValue());
		}

	}

}
	public Map<String, String> sortMapByKey(Map<String, String> oriMap) {
		if (oriMap == null || oriMap.isEmpty()) {
			return null;
		}
		Map<String, String> sortedMap = new TreeMap<String, String>(
				new Comparator<String>() {
					public int compare(String key1, String key2) {
						int intKey1 = 0, intKey2 = 0;
						try {
							intKey1 = getInt(key1);
							intKey2 = getInt(key2);
						} catch (Exception e) {
							intKey1 = 0;
							intKey2 = 0;
						}
						return intKey1 - intKey2;
					}
				});
		sortedMap.putAll(oriMap);
		return sortedMap;
	}

	private int getInt(String str) {
		int i = 0;
		try {
			Pattern p = Pattern.compile("^\\d+");
			Matcher m = p.matcher(str);
			if (m.find()) {
				i = Integer.valueOf(m.group());
			}
		} catch (NumberFormatException e) {
			e.printStackTrace();
		}
		return i;
	}
时间: 2024-11-03 17:33:08

java统计List中的元素重复出现的次数和对map按key或键值排序的相关文章

java统计abacbacdadbc中的每个字母出现的次数,输出格式是:a(4)b(3)c(3)d(2)

原文:http://www.open-open.com/code/view/1456919325625 import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; /* * 统计abacbacdadbc中的每个字母出现的次数,输出格式是:a(4)b(3)c(3)d(2) * * 选中TreeMap的原因是:key不重复且按顺序排序取出 * * 思路: * 1.将字

java统计文本中某个字符串出现的次数

原文: java统计文本中某个字符串出现的次数 源代码下载地址:http://www.zuidaima.com/share/1550463297014784.htm 统计文本中某个字符串出现的次数或字符串中指定元素出现的次数 文件样本: 程序查找的上此文件带"a"的字符在多少次 结果: package com.zuidaima.util.string; import java.io.*; /** * @author www.zuidaima.com **/ public class C

java统计字符串中字符及子字符串个数

import java.util.Scanner;public class Counter { static Scanner scanner = new Scanner(System.in); public static void count(String s) { int low, upper, num, others; low = upper = num = others = 0; for (int i = 0; i < s.length(); i++) { if (Character.is

python 统计list中各个元素出现的次数

python 统计list中各个元素出现的次数利用Python字典统计利用Python的collection包下Counter的类统计利用Python的pandas包下的value_counts的类统计利用字典dict来完成统计举例: a = [1, 2, 3, 1, 1, 2]dict = {}for key in a: dict[key] = dict.get(key, 0) + 1print dict12345输出结果: >>>{1: 3, 2: 2, 3: 1}1利用Python

用python统计list中各元素出现的次数(同理统计字符串中各字符出现的次数)

统计list中各元素出现的次数,下面的方法也适用于统计字符串中各字符出现的次数 1.用字典的形式来处理 a = "abhcjdjje" a_dict = {}for i in a: a_dict[i] = a.count(i)print(a_dict) 2.用count函数直接打印出来 L = [2,4,5,6,2,6,0,4] for i in L: print("%d的次数:%d"%(i,L.count(i))) 3.用collections的Counter函数

Java基础知识强化之集合框架笔记53:Map集合之Map集合的遍历 键值对对象找键和值

1. Map集合的遍历(键值对对象找键和值) Map -- 夫妻对  思路:  A: 获取所有结婚证的集合  B: 遍历结婚证的集合,得到每一个结婚证  C: 根据结婚证获取丈夫和妻子 转换:  A: 获取所有键值对对象的集合  B: 遍历键值对对象的集合,得到每一个键值对对象  C: 根据键值对对象获取键和值 2. 代码示例: 1 package cn.itcast_01; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 impo

js计算数组中某个元素重复出现的个数

let list = [ {name:"1000积分",serialNumber:6}, {name:"500积分",serialNumber:7}, {name:"50积分",serialNumber:8}, {name:"50积分",serialNumber:8}, {name:"50积分",serialNumber:8} ]; 怎么把list数组转化为 [ {title:"1000积分&qu

统计数组中每个元素出现的次数

Dictionary<string, int> counter = new Dictionary<string, int>(); foreach (string c in 数组) { if (counter.ContainsKey(c)) { counter[c]++; } else { counter.Add(c, 1); } if (counter[max] < counter[c]) max = c; } max为元素 counter[max]出现次数最多的元素出现的次

函数中,内置参数与jQuery方法参数(也可以说是对象键值对)

1.一个匿名函数中的参数,是不可以传递给jQuery方法中的参数. 如: 1 var someFn = function(key,value){ 2 $('selector').css({ 3 key:value 4 }) 5 } 2.一个变量不可改变一个键值对中的key. 如: 1 var a; 2 $('selecor').css({ 3 a:value 4 }) 总结: 匿名函数中的内置参数 key  是传递不到  jQuery 方法css() 中的 key 参数 : value 则可以.