精华内容
下载资源
问答
  • HashMap排序,使之成为有序Map

    千次阅读 2017-07-27 16:45:26
    如何HashMap中的值排序?这个问题很多人都遇到过,很...然而问题是往往数据已经封装在了HashMap中,我们必须手动排序后再放入LinkedHashMap,这当然也就成了思路,代码实现起来也很简单,写出来看起来还挺舒服的

    转载自http://www.cnblogs.com/flyfeifei66/p/3995468.html    作者:赵举飞


    如何给HashMap中的值排序?这个问题很多人都遇到过,很常见的一个方案是使用LinkedHashMap,因为LinkedHashMap可以记住元素放入的顺序,可以认为是真正的“有序”(想让HashMap有序是不可能的),我比较喜欢。然而问题是往往数据已经封装在了HashMap中,我们必须手动的排序后再放入LinkedHashMap,这当然也就成了思路,代码实现起来也很简单,写出来看起来还挺舒服的,顺手记一下:

    复制代码
                Map<String,String> myMapTmp = XXDao().getXXX();
                Map<String,String> myMap = new LinkedHashMap<String,String>();
                
                List<String> keyList = new ArrayList<String>();
                Iterator<String> it =myMapTmp.keySet().iterator();
                while(it.hasNext()){
                    keyList.add(it.next());
                }
                Collections.sort(keyList);
                Iterator<String> it2 = keyList.iterator();
                while(it2.hasNext()){
                    String key = it2.next();
                    myMap.put(key, myMapTmp.get(key));
                }
    复制代码

    值得注意的是Collections.sort()方法,API上的解释是:根据元素的自然顺序对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出 ClassCastException)。我已经测试过String类型是可以直接使用这个接口的,如果你的list中元素是自定义的,那么就要自己实现Comparable,自己编写比较器了。
    说了这么多,正文其实是在这里,在用ibatis的queryForMap是查出的结果是无序的,即便是sql中有orderby,即便是ibatis文件中指定了返回值类型(有序类型,如TreeMap,LinkedHashMap),ibatis对数据的填充到底是怎么弄的,我也不清楚,所以才只能在内存中排序,也不失是一种办法,同时抛砖引玉,看看有没有大侠给说说有没有其他办法。

    展开全文
  • 4.5.4 使用手动排序 90 4.5.5 使用自定义序列排序 91 4.6 对数据透视表中的数据进行筛选 92 4.6.1 添加字段到报表筛选区域 92 4.6.2 从报表筛选区中选择一项 94 4.6.3 从报表筛选区中选择多项 94 4.6.4...
  • 4.5.4 使用手动排序 90 4.5.5 使用自定义序列排序 91 4.6 对数据透视表中的数据进行筛选 92 4.6.1 添加字段到报表筛选区域 92 4.6.2 从报表筛选区中选择一项 94 4.6.3 从报表筛选区中选择多项 94 4.6.4...
  • 4.5.4 使用手动排序 90 4.5.5 使用自定义序列排序 91 4.6 对数据透视表中的数据进行筛选 92 4.6.1 添加字段到报表筛选区域 92 4.6.2 从报表筛选区中选择一项 94 4.6.3 从报表筛选区中选择多项 94 4.6.4...
  • 4.5.4 使用手动排序 90 4.5.5 使用自定义序列排序 91 4.6 对数据透视表中的数据进行筛选 92 4.6.1 添加字段到报表筛选区域 92 4.6.2 从报表筛选区中选择一项 94 4.6.3 从报表筛选区中选择多项 94 4.6.4...
  • 自己的讲解的课程选择了数据结构和算法。这个系列的讲解分为上下两章</code>,<code>javascript语言辅助。本篇文章为上章,涉及的内容是基本的数据结构。在日本,晚上没事安排@…@,...
  • Dijkstra(堆优化)

    2018-02-03 23:25:58
    基本思路:用一个优先队列,priority queue来保存点到点之间的距离,优先队列自动把队列里的数据排序(这里需要手动写一个bool型函数来定义为由大到小排序),枚举各种可能的走法,包括当某两点之间的路线为无限大时...

    Dijkstra 算法 (模板)【堆优化】

    传送门:

    Dijkstra:建议先掌握原始版本

    基本思路:用一个优先队列,priority queue来保存点到点之间的距离,优先队列自动把队列里的数据排序(这里需要手动写一个bool型函数来定义为由大到小排序),枚举各种可能的走法,包括当某两点之间的路线为无限大时,(所以可以自动处理重边,而原始版本的不能)最后把最小的方案(即dis)输出给d数组,标记一下,把剩余的方案全部pop出去(相同出发点和目标点的情况下,所以代码中有一句 if(vis[u]) continue;)。

    注意:该模板已经使用STL里的容器,如果对此不熟悉的读者,请先自行百度搜索,我以后会贴出这方面的博客的。

    OK,上代码:

    #include <iostream>
    #include <cstdio>
    #include <queue>
    #include <vector>
    #include <cmath>
    #include <algorithm>
    #define INF 666666
    using namespace std;
    struct ed{int v,c;};//输入数据时vector使用,u代表起始点,v代表目标点,c代表这条边的权值; 
    struct dn{int u,d;};//处理数据时使用,u代表目标点,d代表权值
    vector<ed>g[10001];//注意,其实这里就已经是一个二维数组了,因为每一个vector数组就是一个一维数组
    bool operator < (dn x,dn y){
    	return x.d>y.d;
    }                     //先出小的,就相当于普通算法中的遍历找最小 
    int vis[100001],d[100001],n,m,k;
    int main()
    {
    	scanf("%d%d%d",&n,&m,&k);
    	for(int i=1;i<=n;++i)
    	d[i]=INF;      //初始化d数组,默认与各点距离为无限大 
    	for(int i=1;i<=m;++i)
    	{
    		int u,v,c;
    		scanf("%d%d%d",&u,&v,&c);
    		g[u].push_back((ed){v,c});//输入数据,这里需注意题上给出的是单向路还是双
    	}//                                 单向路 不用判断重边,重边的走法也考虑进了优先
    	priority_queue<dn>q;//              队列
    	q.push((dn){k,0});//将起始点放入堆中 
    	while(!q.empty()){
    		int u=q.top().u,v;
    		double dis=q.top().d;
    		q.pop();//弹出 
    		if(vis[u]) continue;//点u已经用过的话,就跳过 
    		vis[u]=1;//否则标记为1 
    		d[u]=dis;//             struct dn{int u,d;}; 
    		for(int i=0;i<g[u].size();i++)
    		if(!vis[v=g[u][i].v])
    		q.push((dn){v,d[u]+g[u][i].c}); //比较的事已经交给优先队列q了,不必纠结了
    	}//                                       哈哈哈
    	for(int i=1;i<=n;++i)
    	cout<<d[i]<<" ";
    	return 0;
    }
    

    我的QQ:1206668472

    END


    展开全文
  • 排序方案三看起来好些;为什么不直接用名称文本进行排序,我怕不同环境下对多音字不友好,最差情况下也不会比方案一差,并且排序可透过前缀实施自定义控制。 :open_book:坐标和行政区域边界范围 数据源 使用高德...
  • Hadoop实战(第2版)

    2015-10-26 14:28:46
    你将会学习到每个技术的细节,以及当遇到一个具体问题时能够出对应的解决方案。本书提供了结构良好且易于理解的例子,可用于应对你所遇到的问题。  《Hadoop硬实战》包含:  ·Hadoop和MapReduce的基本概念  ·...
  • 实例004 根据需要创建所需解决方案 6 1.2 Visual Studio开发环境的使用 8 实例005 为程序设置版本和帮助信息 8 实例006 设置Windows应用程序启动窗体 9 实例007 统一窗体中控件的字体设置 10 实例008 通过“格式”...
  • 实例244 对ListBox控件中的数据进行排序 实例245 在ListBox控件中查找指定项 实例246 将数据库数据添加到组合框中 实例247 在ListBox控件间交换数据 实例248 借助绑定控件实现数据选择录入 11.6 ListView控件...
  • 实例244 对ListBox控件中的数据进行排序 实例245 在ListBox控件中查找指定项 实例246 将数据库数据添加到组合框中 实例247 在ListBox控件间交换数据 实例248 借助绑定控件实现数据选择录入 11.6 ListView控件...
  • 实例244 对ListBox控件中的数据进行排序 实例245 在ListBox控件中查找指定项 实例246 将数据库数据添加到组合框中 实例247 在ListBox控件间交换数据 实例248 借助绑定控件实现数据选择录入 11.6 ListView控件...
  • 主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows常用控件的使用、...
  • [Oracle.11g权威指南(第2版)].谷长勇.扫描版.pdf

    千次下载 热门讨论 2013-06-23 21:16:09
    第四部分为Oracle 11g数据库管理,主要介绍管理控制文件/重做日志文件/表空间/数据文件、模式对象管理、表分区和索引分区、用户管理与安全、数据完整性和数据约束等;第五部分为Oracle数据库优化,着重介绍Oracle...
  • 8-14 缺省临时表空间 8-15 缺省临时表空间的限制 8-16 脱机状态 8-17 只读表空间 8-19 删除表空间 8-20 改变表空间的大小 8-21 允许数据文件的自动增长 8-22 手工改变数据文件的大小 8-23 表空间添加数据文件 8-24...
  • 手动优化了PDF的书签,书签可折叠,书签链接以目录方式保存,多达1000多页,每页都做了书签定位,手都累酸啦。 ============================== 因权限只能到60MB,分卷压缩了,共3个压缩包,需下载完3个一起解压, ...
  • 手动优化了PDF的书签,书签可折叠,书签链接以目录方式保存,多达1000多页,每页都做了书签定位,手都累酸啦。 ============================== 因权限只能到60MB,分卷压缩了,共3个压缩包,需下载完3个一起解压, ...
  • 3、支持 “数据排序、自动筛选”等操作方式,对排课中的课时分布、特殊安排、限制处理等问题,可调用该手段辅助处理。 4、支持自动预排和手动调整相结合的灵活操作方式。(正式版才提供此项操作功能) 5、操作中有...
  • 6.3 手动数据保护 280 6.4 更多最佳实践 287 6.5 总结 287 第7章 模式与查询技术 289 7.1 预计算值 290 7.1.1 序列表 290 7.1.2 日期计算 297 7.2 二进制大型对象(BLOB) 305 7.3 存储用户自定义数据 307 ...
  • 6.3 手动数据保护 280 6.4 更多最佳实践 287 6.5 总结 287 第7章 模式与查询技术 289 7.1 预计算值 290 7.1.1 序列表 290 7.1.2 日期计算 297 7.2 二进制大型对象(BLOB) 305 7.3 存储用户自定义数据 307 ...
  • 排序数据 11-55 运行命令、宏、或者自定义程序来响应报警 11-56 通过命令使用报警数据 11-58 在标签名称中查看区域名 11-60 禁止报警打印 11-60 按照正确的顺序使用AlarmOn和AlarmPrintOff命令 11-61 禁止报警监视 ...
  •  本书还提供了dba完成本职工作必备的基本的uniix、sql、pl/sql和数据建模的知识,也出了许多富有趣味性的例子,通过这些实例详细、循序渐进地说明了oracle database 11g数据库的各个概念和特性。 作译者  Sam...
  • asp.net知识库

    2015-06-18 08:45:45
    C# 2.0会我们带来什么 泛型技巧系列:如何提供类型参数之间的转换 C#2.0 - Object Pool 简单实现 Attributes in C# 手痒痒,也来个c# 2.0 object pool 泛型技巧系列:用泛型打造可复用的抽象工厂 体验.net2.0的优雅...
  • 新增加了繁体语言和解决方案(技术支持)二大项目,完善了块版代码,更方便了客户的需要.同时也成功案例做了一些完善.而且原来的780px改成了比较大方的1024px 网站更大气. 对原有一些手动加入的地方已完善为全后台智能化...
  • 3. 运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除) 4. 运行regedit命令,打开注册表窗口。删除注册表中与Oracle相关的内容,具体如下:  删除HKEY_LOCAL_MACHINE/...
  • 7.5.1 分区函数和分区方案 330 7.5.2 分区的元数据 331 7.5.3 分区的滑动窗口优势 334 7.6 小结 336 第8章 查询优化器 337 8.1 概述 337 8.1.1 树格式 337 8.2 什么是优化 338 8.3 查询优化器如何...
  • 7.5.1 分区函数和分区方案 330 7.5.2 分区的元数据 331 7.5.3 分区的滑动窗口优势 334 7.6 小结 336 第8章 查询优化器 337 8.1 概述 337 8.1.1 树格式 337 8.2 什么是优化 338 8.3 查询优化器如何...
  • 用变量a出下面的定义 a) 一个整型数(An integer) b) 一个指向整型数的指针(A pointer to an integer) c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer) d...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

给数据手动排序方案