List排序的另一种方法Comparator

													List排序的另一种方法Comparator
										(作者:覃煜霖,撰写时间: 2019年 05月 5日)

对List集合中的数据进行排序,还可以使用到Comparator接口对其进行排序。
执行的代码如下:
public abstract class CommparatorTest {
public static void main(String[] args) {
// List*************
Comparator xvLie = new Comparator() {

		@Override
		public int compare(DataType o1, DataType o2) {
			// TODO Auto-generated method stub
			return o2.getBit() - o1.getBit();
		}
	};
	List<DataType> dataTypeList2 = new ArrayList<DataType>();
	dataTypeList2.add(new DataType("byte", 8, 1));
	dataTypeList2.add(new DataType("boolean", 8, 1));
	dataTypeList2.add(new DataType("char", 16, 2));
	dataTypeList2.add(new DataType("float", 32, 4));
	dataTypeList2.add(new DataType("double", 64, 8));
	dataTypeList2.add(new DataType("short", 16, 2));
	dataTypeList2.add(new DataType("int", 32, 4));
	dataTypeList2.add(new DataType("long", 64, 8));
	// 方法一
	// Collections.sort(dataTypeList2,new Comparator<DataType>() {
	//
	// @Override
	// public int compare(DataType o1, DataType o2) {
	// // TODO Auto-generated method stub
	// return o2.getBit() - o1.getBit();
	// }
	// });
	// 方法二
	Collections.sort(dataTypeList2, xvLie);
	Iterator<DataType> i4 = dataTypeList2.iterator();
	while (i4.hasNext()) {
		DataType dT4 = i4.next();
		System.out.println(dT4.getDataType() + "\t" + dT4.getBit() + "\t"
				+ dT4.getByteMath());
	}
//************************************************TreeSet*************************************************************
	Comparator<DataType> xvLie2 = new Comparator<DataType>() {

		@Override
		public int compare(DataType o1, DataType o2) {
			// TODO Auto-generated method stub
			return o2.getBit() - o1.getBit();
		}
	};
	//方法一
	//Set<DataType> dataTypeSet3  = new TreeSet<>(xvLie2);
	//方法二
	Set<DataType> dataTypeSet3  = new TreeSet<>(new Comparator<DataType>() {

		@Override
		public int compare(DataType o1, DataType o2) {
			// TODO Auto-generated method stub
			return o2.getBit() - o1.getBit();
		}

		
	});
	dataTypeSet3.add(new DataType("byte", 8, 1));
	dataTypeSet3.add(new DataType("boolean", 8, 1));
	dataTypeSet3.add(new DataType("char", 16, 2));
	dataTypeSet3.add(new DataType("float", 32, 4));
	dataTypeSet3.add(new DataType("double", 64, 8));
	dataTypeSet3.add(new DataType("short", 16, 2));
	dataTypeSet3.add(new DataType("int", 32, 4));
	dataTypeSet3.add(new DataType("long", 64, 8));
	System.out.println("TreeSet");
	Iterator<DataType>  i5 = dataTypeSet3.iterator();
	while(i5.hasNext()){
		DataType dT5 = i5.next();
		System.out.println(dT5.getDataType() + "\t" + dT5.getBit() + "\t"
				+ dT5.getByteMath());
	}
//************************************************TreeMap*************************************************************
	Comparator<DataType> xvLie3 = new Comparator<DataType>(){

		@Override
		public int compare(DataType o1, DataType o2) {
			// TODO Auto-generated method stub
			return o2.getBit() - o1.getBit();
		}
	};
	//方法一
	//Map<DataType, Integer> dataTypeMap2 = new TreeMap<DataType, Integer>(xvLie3);
	//

// 方法二
Map<DataType, Integer> dataTypeMap2 = new TreeMap<DataType, Integer>(new Comparator(){

		@Override
		public int compare(DataType o1, DataType o2) {
			// TODO Auto-generated method stub
			return o2.getBit() - o1.getBit();
		}
		
	});
	dataTypeMap2.put(new DataType("byte",8,1),0);
	dataTypeMap2.put(new DataType("boolean",8,1),1);
	dataTypeMap2.put(new DataType("char",16,2),2);
	dataTypeMap2.put(new DataType("float",32,4),3);
	dataTypeMap2.put(new DataType("double",64,8),4);
	dataTypeMap2.put(new DataType("short",16,2),5);
	dataTypeMap2.put(new DataType("int",32,4),6);
	dataTypeMap2.put(new DataType("byte",64,8),7);
	System.out.println("TreeMap");
	Set<DataType> dataTypeSet4 = dataTypeMap2.keySet();
	Iterator<DataType> i6 = dataTypeSet4.iterator();
	while(i6.hasNext()){
		DataType dT6 = i6.next();
		System.out.println(dT6.getDataType()+"\t"+dT6.getBit()+"\t"+dT6.getByteMath());
	}
	Set<Integer> s =new HashSet<Integer>();
	s.add(null);
	s.add(1);
	s.add(1);
	System.out.println(s);
}

}

猜你喜欢

转载自blog.csdn.net/weixin_44543103/article/details/89956613