- 浏览: 3362584 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
http://www.jiancool.com/article/50723356810/
在工作中,我们常常需要对List或者Map等集合结果过滤或者排序,这里我通过使用apache commons和google guava中的方法,简单实现了一下,方便以后使用。
例子中使用的是apache commons3.1和google-guava14,最新版本是18
apache项目下载地址:http://projects.apache.org/indexes/quick.html
apache Collectoins下载地址:http://commons.apache.org/proper/commons-collections/
apache代码如下:
对List中的对象按不同属性排序,请看此
打印结果:
Twitter,3
Youtube,4
Telerik,5
Google,6
Google,6
-------------------你懂的------------------------
Apple,1
Facebook,2
Twitter,3
Youtube,4
Telerik,5
Google,6
google guava代码:
打印结果:
Map-UserGuava=Telerik,3
Map-UserGuava=Twitter,5
Map-UserGuava=Google,4
-------------------你懂的------------------------
List-UserGuava=Telerik,3
List-UserGuava=Google,4
List-UserGuava=Twitter,5
-------------------你懂的------------------------
List-IN-UserGuava=Telerik,3
List-IN-UserGuava=Google,4
List-IN-UserGuava=Twitter,5
-------------------你懂的------------------------
List-Sort-UserGuava=JetBrains,1
List-Sort-UserGuava=Youtube,1
List-Sort-UserGuava=Apple,2
List-Sort-UserGuava=Facebook,2
List-Sort-UserGuava=Telerik,3
List-Sort-UserGuava=Google,4
List-Sort-UserGuava=Twitter,5
在工作中,我们常常需要对List或者Map等集合结果过滤或者排序,这里我通过使用apache commons和google guava中的方法,简单实现了一下,方便以后使用。
例子中使用的是apache commons3.1和google-guava14,最新版本是18
apache项目下载地址:http://projects.apache.org/indexes/quick.html
apache Collectoins下载地址:http://commons.apache.org/proper/commons-collections/
apache代码如下:
对List中的对象按不同属性排序,请看此
package com.umapp.test; public class UserGuava { private String name; private int age; @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; UserGuava other = (UserGuava) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } public UserGuava(){ } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package com.umapp.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.commons.collections.Predicate; import org.apache.commons.collections.iterators.FilterIterator; import org.apache.commons.collections.iterators.UniqueFilterIterator; public class TestApache { /** * @param args */ public static void main(String[] args) { List<UserGuava> list = new ArrayList<UserGuava>(); UserGuava user = new UserGuava(); user.setAge(1); user.setName("Apple"); list.add(user); user = new UserGuava(); user.setAge(2); user.setName("Facebook"); list.add(user); user = new UserGuava(); user.setAge(3); user.setName("Twitter"); list.add(user); user = new UserGuava(); user.setAge(4); user.setName("Youtube"); list.add(user); user = new UserGuava(); user.setAge(5); user.setName("Telerik"); list.add(user); user = new UserGuava(); user.setAge(6); user.setName("Google"); list.add(user); user = new UserGuava(); user.setAge(6); user.setName("Google"); list.add(user); Predicate predicate=new Predicate(){ @Override public boolean evaluate(Object arg0) { UserGuava u = (UserGuava)arg0; return u.getAge()>2; } }; Iterator<?> iterator=new FilterIterator(list.iterator(),predicate); while(iterator.hasNext()){ UserGuava u = (UserGuava)iterator.next(); System.out.println(u.getName()+","+u.getAge()); } System.out.println("-------------------你懂的------------------------"); Iterator iterator1=new UniqueFilterIterator(list.iterator()); while(iterator1.hasNext()){ UserGuava u = (UserGuava)iterator1.next(); System.out.println(u.getName()+","+u.getAge()); } } }
打印结果:
Twitter,3
Youtube,4
Telerik,5
Google,6
Google,6
-------------------你懂的------------------------
Apple,1
Facebook,2
Twitter,3
Youtube,4
Telerik,5
Google,6
google guava代码:
package com.umapp.test; import java.util.Comparator; public class NameComparator implements Comparator<UserGuava> { @Override public int compare(UserGuava user, UserGuava user1) { return user.getName().compareTo(user1.getName()); } }
package com.umapp.test; import java.util.Comparator; public class AgeComparator implements Comparator<UserGuava> { @Override public int compare(UserGuava user, UserGuava user1) { return user.getAge() > user1.getAge() ? 1 : (user.getAge() == user1.getAge() ? 0 : -1); } }
package com.umapp.test; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Collections2; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Ordering; public class TestGuava { public static void main(String[] args) { Map<String, UserGuava> map = Maps.newHashMap(); List<UserGuava> list = Lists.newArrayList(); UserGuava user = new UserGuava(); user.setAge(1); user.setName("JetBrains"); map.put("1", user); list.add(user); user = new UserGuava(); user.setAge(2); user.setName("Apple"); list.add(user); map.put("2", user); user = new UserGuava(); user.setAge(3); user.setName("Telerik"); list.add(user); map.put("3", user); user = new UserGuava(); user.setAge(4); user.setName("Google"); list.add(user); map.put("4", user); user = new UserGuava(); user.setAge(5); user.setName("Twitter"); list.add(user); map.put("5", user); user = new UserGuava(); user.setAge(2); user.setName("Facebook"); list.add(user); map.put("2", user); user = new UserGuava(); user.setAge(1); user.setName("Youtube"); map.put("1", user); list.add(user); Predicate<UserGuava> preFilter = new Predicate<UserGuava>(){ @Override public boolean apply(UserGuava user) { return user.getAge()>2; } }; for (Entry<String, UserGuava> e : map.entrySet()) { if (preFilter.apply(e.getValue())) { UserGuava u= (UserGuava)e.getValue(); System.out.println("Map-UserGuava="+u.getName()+","+u.getAge()); } } System.out.println("-------------------你懂的------------------------"); for (UserGuava u:list) { if (preFilter.apply(u)) { System.out.println("List-UserGuava="+u.getName()+","+u.getAge()); } } System.out.println("-------------------你懂的------------------------"); Predicate<UserGuava> p1 = new Predicate<UserGuava> () { @Override public boolean apply(UserGuava user) { if (user == null) { return false; } if (Objects.equals(user.getAge(), 1)) { return false; } return true; } }; Predicate<UserGuava> p2 = new Predicate<UserGuava> () { @Override public boolean apply(UserGuava user) { if (user == null) { return false; } if (Objects.equals(user.getAge(), 2)) { return false; } return true; } }; Predicate<UserGuava> unionPredicate = Predicates.and(p1, p2); //两种处理方式 // List<UserGuava> newUserList = Lists.newArrayList(Iterators.filter(list.iterator(), unionPredicate)); Collection<UserGuava> newUserList =(Collection<UserGuava>) Collections2.filter(list, unionPredicate); for (UserGuava u:newUserList) { System.out.println("List-IN-UserGuava="+u.getName()+","+u.getAge()); } System.out.println("-------------------你懂的------------------------"); //先按年龄,再按名称排序 Comparator<UserGuava> userComparator = Ordering .from(new AgeComparator()).compound(new NameComparator()); Collections.sort(list, userComparator); for (UserGuava u:list) { System.out.println("List-Sort-UserGuava="+u.getName()+","+u.getAge()); } } }
打印结果:
Map-UserGuava=Telerik,3
Map-UserGuava=Twitter,5
Map-UserGuava=Google,4
-------------------你懂的------------------------
List-UserGuava=Telerik,3
List-UserGuava=Google,4
List-UserGuava=Twitter,5
-------------------你懂的------------------------
List-IN-UserGuava=Telerik,3
List-IN-UserGuava=Google,4
List-IN-UserGuava=Twitter,5
-------------------你懂的------------------------
List-Sort-UserGuava=JetBrains,1
List-Sort-UserGuava=Youtube,1
List-Sort-UserGuava=Apple,2
List-Sort-UserGuava=Facebook,2
List-Sort-UserGuava=Telerik,3
List-Sort-UserGuava=Google,4
List-Sort-UserGuava=Twitter,5
发表评论
-
分布式存储系统GlusterFS安装配置
2016-06-27 14:51 992http://navyaijm.blog.51cto.com/ ... -
Java Comparable和Comparator
2016-06-26 08:52 655http://my.oschina.net/android52 ... -
分布式查询 presto 入门安装使用
2016-06-24 15:44 2466http://my.oschina.net/chengxiao ... -
Java集合框架之fastutil & koloboke
2016-06-23 14:04 2409Java集合框架之fastutil http://rensan ... -
跟我学习dubbo
2016-06-17 15:20 1031跟我学习dubbo-目录 http://bluereader. ... -
JavaMelody监控web服务器
2016-06-17 14:20 1145JavaMelody监控web服务器 http://my.os ... -
freemarker使用记录
2016-06-08 16:24 1278freeMarker语法 http://uule.iteye. ... -
freemarker判断是否为空
2016-06-08 16:03 2http://www.oschina.net/code/sni ... -
ehcache 分布式支持
2016-06-05 22:26 1056原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2839原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1494http://my.oschina.net/wjme/blog ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2238http://www.oschina.net/p/uncode ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3388http://www.guokr.com/blog/47576 ... -
Java集合: Queue和Deque
2016-05-09 09:49 1826Queue http://my.oschina.net/kev ... -
使用gzip优化web应用(filter实现)
2016-05-07 01:45 999使用gzip优化web应用(filter实现) http:// ... -
Fedora安装Redis
2016-05-04 08:56 1377管理工具: centos6.3下安装phpredisadmin ... -
redis-install.sh
2016-05-04 08:56 4#!/bin/bash # From here: http: ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1270集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4731使用Spring-data进行Redis操作 http://z ... -
Shiro集群实现
2016-05-04 08:53 2261apache shiro集群实现(一) session共享 h ...
相关推荐
java 使用Collections类对List的排序操作 java 使用Collections类对List的排序操作
Apache Commons Collections,commons-collections-3.2.1和commons-collections4-4.0,含jar包及源码和api文档。
NULL 博文链接:https://xuedong.iteye.com/blog/1147254
guava类似Apache Commons工具集包含了若干被Google的 Java项目广泛依赖 的核心库
apache collections api_zh
Apache Commons Collections的使用指南,该jar包提供了多数集合的线程安全版本,以及增强了大多数的集合功能,送给那些不想重复发明轮子的人.
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
标签:apache-collections-commons-collections-3.1.jar.zip,apache,collections,commons,collections,3.1,jar.zip包下载,依赖包
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
该文件里包含两个.jar包: collections-generic-4.01.jar和looks-2.1.4.jar, 引入collections-generic-4.01.jar: 右击工程--》Build path ——》Add External JAR-->选中collections-generic-4.01.jar --》OK 在源...
Write more robust code that is easier to read and maintain, Learn how to use Preconditions to prevent and find errors faster, Shows how Guava Collections can make working with Java Collections a ...
Google_Guava_Collections_使用介绍.pdf )
由于Collections排序实际上是对字符串进行比较,然后对日期排序,但是有时候给的日期不是很规范,所以想把日期统一化, 这样用Collections进行升序排序
主要介绍了JAVA对list集合进行排序Collections.sort(),需要的朋友可以参考下
//如果要对键进行排序Map map=new TreeMap(); Map,String> map=new TreeMap,String>(); //Map map=new HashMap(); map.put(1, "yi"); map.put(23, "er"); map.put(12, "san"); map.put(3, "si"); //遍历...
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
Guava is a set of core Java libraries from Google that includes new collection types (such as multimap and multiset), immutable collections, a graph library, and utilities for concurrency, I/O, ...
google-collections-1.0-rc2.jar 的jar包,放心使用。
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...