java集合List集合使用Collections排序

硅谷探秘者 2402 0 0

有Student类,一个List集合中有若干Student对象,对此集合按分数排序


Student

package com.example.demo.entity;
@SuppressWarnings("rawtypes")
public class Student implements Comparable{
	private int id;
	private String name;
	private float score;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public float getScore() {
		return score;
	}
	public void setScore(float score) {
		this.score = score;
	}
	public Student(int id, String name, float score) {
		super();
		this.id = id;
		this.name = name;
		this.score = score;
	}
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	@Override
	public int compareTo(Object o){
		// TODO Auto-generated method stub
		if(o instanceof Student) {
			Student s=(Student)o;
			if(s.getScore()>this.getScore()) {
				return 1;
			}else if(s.getScore()<this.getScore()){
				return -1;
			}else {
				return 0;
			}
		}else {
			try {
				throw new Exception("比较异常");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return 0;
	}
}

        要想使用Collections.sort(l); 排序 Student类必须实现Comparable接口,如上,返回1本对象大于比较对象,-1代表小于比较对象。

@Override
	public int compareTo(Object o){
		// TODO Auto-generated method stub
		if(o instanceof Student) {
			Student s=(Student)o;
			if(s.getScore()>this.getScore()) {
				return 1;
			}else if(s.getScore()<this.getScore()){
				return -1;
			}else {
				return 0;
			}
		}else {
			try {
				throw new Exception("比较异常");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return 0;
	}


测试

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import com.example.demo.entity.Student;
public class Test2Controller {
	
	@SuppressWarnings("unchecked")
	@Test
	public void test() {
		List<Student> l=new ArrayList<Student>();
		for(int i=0;i<1000;i++){
			l.add(new Student(i,"test"+i,(float)Math.round((Math.random()*10000))/100));
		}
		long t=0;
		t-=System.currentTimeMillis();
		Collections.sort(l);
		t+=System.currentTimeMillis();
		System.out.println("time:"+t);
		for(Student s:l) {
			System.out.print(s.getScore()+"   ");
		}
	}
}


猜你喜欢
java基础 255 java之Hashtable一、构造方法1.publicHashtable()publicHashtable(){this(11,0.75f);}无参构造,初始化一个容量为11,负载因子为
java基础 1260 常的学习开发中,灵活熟练地使这些框架,可以很明显地提高我们的开发效率,当然仅仅会还是不够的,理解其中的设计思想与原理才能更好地提高我们的开发水平。1.Collection接口从图中可以知道Col
java基础 1116 add和remove,LinkedList比较占优势。2.双向链表的实现参考:简单双向链表的增删改查3.linkedList的继承关系从继承图中可以看出LinkList实现了List接口,实现了list
java基础 1587 不是线程安全的,只能在单线程环境下,多线程环境下可以考虑Collections.synchronizedList(Listl)函数返回一个线程安全的ArrayList类。构造方法:ArrayList
java基础 210 一、HashSet底层实现从HashSet的源码中可以发现,它的底层维护了一个HashMap,在newHashSet的时候,构造方法中其实是new了一个HashMap。privatetransientHashMapE,Objectmap;publicHashSet(){map=newHashMap();}publicHashSet(Collection?extendsEc){map=newHash
java基础 349 java之TreeMap实现原理TreeMap的实现其实说简单也简单说复杂也复杂,说简单是因为TreeMap底层实现完全依靠红黑树这个数据结构,相比与HashMap来说TreeMap不考虑
数据结构与算法 156 算法思想:把所有需要的数据分成两个,一个是待,一个是已,算法每次从未或随机拿取一个数据,把它加入到已使其有,直到未中的数据被取走完,算法结束
数据结构与算法 213 算法思想把所有需要的数据分成两个,一个是待,一个是已,算法每次从未或随机拿取一个数据,把它加入到已使其有,直到未中的数据被取走完,算法结束案例
归档
2018年11月  12 2018年12月  33 2019年01月  28 2019年02月  28 2019年03月  32 2019年04月  27 2019年05月  33 2019年06月  6 2019年07月  12 2019年08月  12 2019年09月  21 2019年10月  8 2019年11月  15 2019年12月  25 2020年01月  9 2020年02月  5 2020年03月  16 2020年04月  4 2020年06月  1 2020年07月  7 2020年08月  13 2020年09月  9 2020年10月  5 2020年12月  3 2021年01月  1 2021年02月  5 2021年03月  7
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo
目录