- 浏览: 383353 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
小灯笼:
LoadRunner性能测试实战课程网盘地址:https:// ...
LoadRunner性能测试实战教程 -
爱上疯狂:
[范德萨发的是 发大水发大水发多大沙发啊quote]
main方法测试外系统接口 -
siphlina:
Loadrunner视频——http://pan.baidu. ...
LoadRunner性能测试实战教程 -
全球唯一的你:
LoadRunner性能测试实战视频教程课程观看地址:http ...
LoadRunner性能测试实战教程 -
凡人修仙:
课程:LoadRunner性能测试实战网盘地址: http:/ ...
LoadRunner性能测试实战教程
场景: 需要统计errorMsg的数量, 从大到小排序。 errorMsg为key, 数量为value。
按照key排序 很简单,TreeMap就ok。
按值排序就相对麻烦些了,貌似没有直接可用的数据结构能处理类似需求,需要我们自己转换一下。
Map本身按值排序是很有意义的,很多场合下都会遇到类似需求,可以认为其值是定义的某种规则或者权重。
原理:将待排序Map中的所有元素置于一个列表中,接着使用Collections的一个静态方法 sort(List<T> list, Comparator<? super T> c)
来排序列表,同样是用比较器定义比较规则。排序后的列表中的元素再依次装入Map,为了肯定的保证Map中元素与排序后的List中的元素的顺序一致,使用了LinkedHashMap数据类型。
参考
http://blog.csdn.net/top_code/article/details/8528954
按照key排序 很简单,TreeMap就ok。
按值排序就相对麻烦些了,貌似没有直接可用的数据结构能处理类似需求,需要我们自己转换一下。
Map本身按值排序是很有意义的,很多场合下都会遇到类似需求,可以认为其值是定义的某种规则或者权重。
原理:将待排序Map中的所有元素置于一个列表中,接着使用Collections的一个静态方法 sort(List<T> list, Comparator<? super T> c)
来排序列表,同样是用比较器定义比较规则。排序后的列表中的元素再依次装入Map,为了肯定的保证Map中元素与排序后的List中的元素的顺序一致,使用了LinkedHashMap数据类型。
package com.tristan; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.Map.Entry; import com.hp.hpsc.logview.client.LogviewClient; import com.hp.hpsc.logview.po.Link; public class TestA { public static void main(String[] args) throws Exception { /* * // linux String file = "/opt/sasuapps/itrc/logs/logview/info.log"; * String folder = "/opt/sasuapps/itrc/logs"; * * LogviewClient client = new LogviewClient(); List<Link> list = * client.readDirectory(folder); for (Link link : list) { * System.out.println(link.getName()); } * * LogviewClient client2 = new LogviewClient(); client2.readLog(file); */ // now SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String nowS = "2014-03-18"; Date nowD = sdf.parse(nowS); Calendar nowC = Calendar.getInstance(); nowC.setTime(nowD); String folder = "/opt/sasuapps/itrc/logs/sp4tsusergroup/main/error"; LogviewClient client = new LogviewClient(); List<Link> list = client.readDirectory(folder); // check file last modified date SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); List<String> fileList = new ArrayList<String>(); for (Link link : list) { if (!link.isFolderFlag()) { String s1 = link.getLastModifiedDate(); Date d1 = sdf1.parse(s1); Calendar c1 = Calendar.getInstance(); c1.setTime(d1); Calendar nowMinus2 = Calendar.getInstance(); nowMinus2.setTime(nowD); nowMinus2.add(Calendar.DATE, -2); if (c1.after(nowMinus2)) { System.out.println(link.getName()); fileList.add(link.getUri()); } } } // get the content which match the date like 03/21/2013 SimpleDateFormat sdf2 = new SimpleDateFormat("MM/dd/yyyy"); LogviewClient client2 = new LogviewClient(); List<String> errorList = new ArrayList<String>(); for (String file : fileList) { InputStream input = client2.loadInputStream(file); InputStreamReader isr = new InputStreamReader(input); BufferedReader br = new BufferedReader(isr); String temp = ""; while ((temp = br.readLine()) != null) { if (temp.length() > 10) { String s1 = temp.substring(0, 10); Date d1 = null; try { d1 = sdf2.parse(s1); } catch (Exception e) { continue; } Calendar c1 = Calendar.getInstance(); c1.setTime(d1); Calendar nowMinus2 = Calendar.getInstance(); nowMinus2.setTime(nowD); nowMinus2.add(Calendar.DATE, -2); Calendar nowMinus1 = Calendar.getInstance(); nowMinus1.setTime(nowD); nowMinus1.add(Calendar.DATE, -1); if (c1.after(nowMinus2) && c1.before(nowC)) { errorList.add(temp); } } } br.close(); isr.close(); input.close(); } // parse error list List<String> errorMsgList = new ArrayList<String>(); for (String error : errorList) { int begin = error.indexOf("{"); String s1 = error.substring(begin + 1); int end = s1.indexOf(":"); s1 = s1.substring(0, end); errorMsgList.add(s1); } // statistics Map<String, Integer> map = new HashMap<String, Integer>(); for (String temp : errorMsgList) { Integer count = map.get(temp); map.put(temp, (count == null) ? 1 : count + 1); } //sort Map<String, Integer> resultMap = sortMapByValue(map); for (String key : resultMap.keySet()) { System.out.println(resultMap.get(key) + " : " + key); } } public static Map<String, Integer> sortMapByValue( Map<String, Integer> oriMap) { if (oriMap == null || oriMap.isEmpty()) { return null; } List<Map.Entry<String, Integer>> entryList = new ArrayList<Map.Entry<String, Integer>>( oriMap.entrySet()); Collections.sort(entryList, new MapValueComparator()); Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>(); for(Map.Entry<String, Integer> entry : entryList){ sortedMap.put(entry.getKey(), entry.getValue()); } return sortedMap; } } class MapValueComparator implements Comparator<Map.Entry<String, Integer>> { @Override public int compare(Entry<String, Integer> me1, Entry<String, Integer> me2) { return me2.getValue().compareTo(me1.getValue()); } }
参考
http://blog.csdn.net/top_code/article/details/8528954
发表评论
-
oracle sql 学生表 选课表
2014-07-15 15:34 1672查询语句 select * from student; ... -
omniture
2014-06-12 15:45 702PageView 200w+ Visits 50w+ ... -
Mongodb Hbase oracle
2014-05-11 19:20 1887Mongodb/hbase Oracle减少表 ... -
类加载
2014-05-10 21:22 474tomcat 启动后会加载web.xml中定义的filter和 ... -
cookie session
2014-05-10 16:18 572cookie中除了存放session的id外,还用以购物车的功 ... -
面向过程 面向对象
2014-05-10 16:14 610面向过程 可以快速出结 ... -
解释型 编译型 语法糖
2014-05-10 15:43 434语法糖 泛型,变长参数,自动装箱拆箱, foreach 虚拟机 ... -
类文件结构 等
2014-05-08 17:08 578代码编译的结果从本地 ... -
restful webservice SOAP servlet 区别
2014-05-08 15:53 1226restful webservice 和 servlet的关系 ... -
位 字节
2014-05-08 09:24 5451byte=8bit 所以1个字节的表达范围就是2^8=256 ... -
jvm 64 32 区别
2014-05-07 15:53 667java程序运行在64位jvm上需要付出较大的额外代价 1, ... -
boxing
2014-05-06 16:37 552Integer i1 = 100; Integ ... -
synchronized
2014-05-06 16:33 582synchronized public void test1( ... -
spring 生命周期
2014-05-05 15:43 427只有singleton行为的bean接受容器管理生命周期。 ... -
Hashtable ConcurrentHashMap 区别
2014-05-05 12:51 465ConcurrentHashMap 中的segment继承了 ... -
hadoop storm 区别
2014-04-30 13:23 4233http://www.zhihu.com/question/2 ... -
RPC vs RMI
2014-04-30 10:48 488RPC, SOAP, WSDL都是web service的关键 ... -
java 子线程
2014-04-23 15:34 600java 主线程调用子线程后 可以用join的方式等待子线程返 ... -
Tomcat多应用共享Session crossContext
2014-04-23 10:18 2779http://blog.csdn.net/lip009/art ... -
weblogic console 作用
2014-04-23 10:10 620weblogic console 可以对server / ap ...
相关推荐
以下是关于Java Map按照Value排序的实现方法的详细说明: 1. **HashMap**: - HashMap是基于哈希表实现的,它不保证元素的顺序,插入顺序和遍历顺序可能不同,而且不支持排序。 2. **TreeMap**: - TreeMap基于...
对Map的key和value进行排序 对Map的key和value进行排序是Java编程中非常重要的一部分。Map是Java集合框架中的一种数据结构,用于存储键值对。然而,在实际应用中,我们经常需要对Map中的key或value进行排序,以满足...
当需要对Map中的数据进行排序时,通常有两种情况:按key排序和按value排序。本文将详细介绍如何在Android环境下对Map进行这两种排序。 首先,我们来讨论按key排序。TreeMap是一个基于红黑树实现的Map,它可以根据...
"对 Map 按 key 和 value 分别排序" 摘要:本文主要介绍了 Map 按 key 和 value 分别排序的方法,包括使用 TreeMap 的 key 排序和 value 排序两种方式。 Map 按 key 排序 Map 是键值对的集合接口,它的实现类主要...
然而,有时我们需要对Map中的值进行排序,例如按照value的大小进行升序或降序排列。这篇博客"对map里面的value进行排序"探讨的就是如何实现这一需求。 首先,我们了解Map接口的基本概念。Map接口不直接支持排序,...
本文将探讨如何通过对VALUE排序HashMap,并分析相关源代码。 HashMap本身并不支持对值的排序,因为它内部使用哈希表实现,主要关注的是键的哈希计算和冲突解决,而不是元素的顺序。如果需要对HashMap的值进行排序,...
Map是一种键值对的集合,它可以按照键或值进行排序。下面,我们将详细地介绍Java Map的按键排序和按值排序。 按键排序(sort by key) Java中的TreeMap,V>类可以实现Map的按键排序。TreeMap,V>是一个基于红黑树的...
然而,Map集合本身并不支持按照值(value)进行排序。要实现按value值排序,我们需要借助额外的工具类和方法。在本例中,我们将详细探讨如何在Java中对Map集合按value值进行排序,并给出一个具体的实例代码。 首先...
Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现 Java8 中的 Stream 操作为开发者提供了简洁高效的数据处理方式,今天我们将介绍如何使用 Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现。 Map 根据 ...
标题中提到的“JCF(List、Set、Map)学习,实现了,value>按value排序”是一个关键点,我们将深入探讨这个话题。 首先,让我们了解List、Set和Map的区别。List是有序的集合,允许重复元素,并且可以保持插入顺序;Set...
然而,在某些场景下,我们可能需要将Map中的元素按照值(value)进行排序。本文将详细介绍如何在Java中实现Map按值排序的几种方法。 1. 使用TreeMap TreeMap是Java中实现Map接口的一个类,它内部使用红黑树数据结构...
在主程序中,我们可以创建一个TreeSet对象,它会自动按照Pair的compareTo()方法进行排序。这样,当添加Pair对象到TreeSet时,它们将按值排序。 ```java import java.util.*; class Pair implements Comparable...
- 当需要根据value进行排序时,由于Map本身并不直接支持value排序,我们需要使用其他方法。一种常见做法是先将Map的entrySet转换为List,然后使用`Collections.sort()`方法,传入一个Comparator来按value排序。 - ...
本文将详细介绍如何实现`Map`按照值(value)升序排序以及按照键(key)排序。 首先,我们需要了解`Map`的基本概念。`Map`接口是Java集合框架的一部分,它定义了键值对的存储和访问方法。常见的`Map`实现有`HashMap...
支持一个List<Map>按照MAP中的一个或者多个Key的value值的中英文来排序,自动识别字符和数字(包括[a-zA-z]?[0-9]*)排序
然而,有时候我们可能需要对Map按照键(key)或者值(value)进行排序。这里,我们讨论的是“对于Java Map类排序”,特别是通过键进行排序。 在给定的代码中,有一个名为`mapSortByKey`的方法,该方法接收一个未...
然而,Map默认不保证元素的顺序,如果需要按照特定规则进行排序,我们需要用到特定类型的Map或者手动排序。本文将深入探讨Java Map集合的排序方法。 一、TreeMap:自动排序 1. **TreeMap** 是一个基于红黑树实现的...
在STL中,`map`是一个关联容器,它存储键值对(key-value pairs),其中每个键都是唯一的,并且通过键进行排序。`map`的实现通常基于红黑树,这保证了其在插入、删除和查找操作上的平均时间复杂度为O(log n)。 在...
默认情况下,Map并不保证其元素的顺序,但有些场景下我们需要按照特定的规则对Map进行排序,比如按照键的自然顺序或自定义顺序。 首先,我们要了解Map的两种主要实现类:HashMap和TreeMap。HashMap是非排序的,而...