java treeset 实 现 排 序&& 去 %%重%%
来源:互联网 发布:wifi网络连接不可用 编辑:程序博客网 时间:2024/05/30 04:29
1.例子要求:假设对数据表的int字段weight,int id(id为主键),实现weight相同,则比较id,且id按降序排列。,若weight,id均相同,则为同一对象,将实现去重效果。
也就是判断去重的条件是:weight,id都返回值为0;
1.数据表数据:
public class APP {
public static void main(String[] args) {
QueryRunner runner = DBCommon.getQueryRunner();
Map<String,Set<RelationRegex>> regMap=getRegInfoByDb( runner);
System.out.println("正则按权重排序,id倒序的规则=======");
for(String key:regMap.keySet()){
Set<RelationRegex> rrSet=regMap.get(key);
for(RelationRegex r:rrSet){
System.out.println(r.getId()+"==="+r.getWeight());
}
}
System.out.println("======================================");
}
/**
*
* @param runner
* @return
*/
public static Map<String,Set<RelationRegex>> getRegInfoByDb(QueryRunner runner){
String sql="select a.name,b.* from relation_name as a ,relation_regex as b where a.id=b.relation_name_id and a.valid_flg=1 and b.valid_flg=1 order by b.weight asc,id desc ";
Map<String,Set<RelationRegex>> rrBeanMap=new TreeMap<String,Set<RelationRegex>>();
List<Map<String,Object>> mapList=null;
try {
mapList=runner.query(sql, new MapListHandler());
for(Map<String,Object> map:mapList){
String name= map.get("name")==null?"":map.get("name").toString();
RelationRegex rr=new RelationRegex();
rr.setId(map.get("id")==null?0:(Integer)map.get("id"));
rr.setRegex(map.get("regex")==null?"":map.get("regex").toString());
rr.setRelationName(name);
rr.setRelationNameId(map.get("relation_name_id")==null?"":map.get("relation_name_id").toString());
rr.setDirection(map.get("direction")==null?0:(Integer)map.get("direction"));
rr.setWeight(map.get("weight")==null?0:(Integer)map.get("weight"));
rr.setCreateTime(map.get("create_time")==null?"":map.get("create_time").toString().replace(".0", ""));
Set<RelationRegex> rSet= rrBeanMap.get(name);
if(rSet==null||rSet.size()<1){
rSet= new TreeSet<RelationRegex>();
rSet.add(rr);
}
else{
rSet.add(rr);
}
rrBeanMap.put(name, rSet);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rrBeanMap;
}
2.Java 重写的核心代码:
public int compareTo(RelationRegex o) {
// TODO Auto-generated method stub
if(this.getWeight()>o.getWeight()){
return 1;
}
if(this.getWeight()==o.getWeight()){
//权重相同的话,比较主键id,倒序排列
//return new Integer(this.getId()).compareTo(new Integer(o.getId()));
if(this.getId()>o.getId()){
return -1;
}
else if(this.getId()==o.getId()){
return 0;
}
else{
return 1;
}
}
else{
return -1;
}
}
运行结果:
正则按权重排序,id倒序的规则=======
6===1
3===2
8===5
7===5
2===0
1===0
======================================
源代码参考网盘 java/
- java treeset 实 现 排 序&& 去 %%重%%
- TreeSet去重字符串
- Java中hashSet与treeSet的去重原理
- HashSet与TreeSet去重的区别
- TreeSet去重和定制排序
- 【Java相关】Java中TreeSet和HashSet的排序和去重
- JAVA集合框架之List HashSet去重及TreeSet排序详解
- Java 自 定 义 对 象 实 现 去 重
- 数组去重和排序,可以用TreeSet直接做
- TreeSet去重排序(华为研发工程师编程题)
- TreeSet集合的一个比较器排序去重案例
- java 对象去重
- java 字符串去重
- Java图片去重
- java list 去重
- java数组去重
- Java数组去重
- JAVA 去重
- 95. Unique Binary Search Trees II
- 一些关于
- java线程基础知识
- 素数的问题
- PAT 甲级 1011. World Cup Betting
- java treeset 实 现 排 序&& 去 %%重%%
- 【QT】将OpenGL渲染的图像放置到ui界面中
- Flask零基础到项目实战(三)Jinja2模板系统
- elasticsearch映射
- Java中split的用法
- Es6 十大新特性
- CentOS7下宽带连接
- PAT 甲级 1015. Reversible Primes
- 谷歌浏览器不兼容select的option里onclick事件的解决方案