package com.weina.utils;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import com.weina.PymkItemVO;
public class PymkItemTypeComparator implements Comparator<PymkItemVO> {
private int[] TYPE_ORDER = {1,16,8,2,4}; //按照指定的这个排序
public PymkItemTypeComparator() {
}
/**
* 是否倒序
* @param desc
*/
public PymkItemTypeComparator(boolean desc) {
if (desc) {
int[] temp = new int[TYPE_ORDER.length];
for (int i=0; i<TYPE_ORDER.length; i++) {
temp[i] = TYPE_ORDER[TYPE_ORDER.length - i - 1];
}
TYPE_ORDER = temp;
}
}
@Override
public int compare(PymkItemVO o1, PymkItemVO o2) {
for (int type : TYPE_ORDER) {
int type1 = o1.getType() & type;
int type2 = o2.getType() & type;
System.out.println("type="+type+";type1="+type1+";type2="+type2);
if (type1 != type2) {
return type2 - type1;
}
}
return 0;
}
public static void main(String[] args) {
List<PymkItemVO> pymkList = new LinkedList<PymkItemVO>();
PymkItemVO item = new PymkItemVO();
item.setStatus("n");
item.setType(4);
item.setUserId(11);
pymkList.add(item);
item = new PymkItemVO();
item.setStatus("n");
item.setType(2);
item.setUserId(22);
pymkList.add(item);
item = new PymkItemVO();
item.setStatus("n");
item.setType(16);
item.setUserId(33);
pymkList.add(item);
item = new PymkItemVO();
item.setStatus("n");
item.setType(1);
item.setUserId(44);
pymkList.add(item);
item = new PymkItemVO();
item.setStatus("n");
item.setType(8);
item.setUserId(55);
pymkList.add(item);
System.out.println(pymkList);
Collections.sort(pymkList, new PymkItemTypeComparator());
System.out.println(pymkList);
Collections.sort(pymkList, new PymkItemTypeComparator(true));
System.out.println(pymkList);
System.out.println("=================");
int a = 8;
int[] TYPE_ORDER = {1,8,2,4};
for (int type : TYPE_ORDER) {
System.out.print(a & type);
System.out.print(" ");
}
System.out.println("=================");
}
}
分享到:
相关推荐
程序实现时间排序Comparator
java排序Comparator和Comparable
主要介绍了JAVA使用Comparator接口实现自定义排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
可以通过两种方式自定义对象的属性大小进行比较,对一个list或数组对根据属性排序一个list或数组
Java中Comparator接口的用法 对集合排序的例子 Comparator
NULL 博文链接:https://singhoo.iteye.com/blog/1704428
List对象集合的排序:比较器Comparator
4. * 汉字按照拼音排序的比较器 5. * @author KennyLee 2009-2-23 10:08:59 6. * 7. */ 8.public class PinyinComparator implements Comparator<Object> { 9. public int compare(Object o1, Object o2) { 10...
本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[]...
NULL 博文链接:https://elvin-chu.iteye.com/blog/1979500
java Comparator 用法 例子java Comparator 用法 例子java Comparator 用法 例子java Comparator 用法 例子
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
493.491.JAVA基础教程_常用类-使用Comparator实现定制排序(493).rar
计算机后端-Java-Java核心基础-第22章 常用类 23. 使用Comparator实现定制排序.avi
Comparable&Comparator区别,看完就明白了
文件比對工具,可以生成比對報告,支持itd、doc和ttx。
comparator接口与Comparable接口的区别
在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排序。 这篇文章是Baeldung上的“Java ——...
java的Comparator和Comparable
主要给大家介绍了关于Java 8 Comparator: 列表排序的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java8具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧