java集合List集合使用Collections排序

2019 精帖
0 2287

有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()+"   ");
		}
	}
}


留言(0)
加载更多
猜你喜欢
  • ofc springboot整activemq ( mq )

    springboot整activemq ( mq )
  • blog springbooy整thymeleaf

    在springboot整视图层,官方推荐使thymeleaf。 thymeleaf只是渲染html的一种方式,是一种模板。第一步创建一个maven项目 第二步:修改Jdk版本,添加thymeleaf启动器 <properti
  • blog equals()与hashCode()方法总结

    1.hashCode方法的作: 对于包含容器类型的程设计语言来说,基本上都会涉及到hashCode,hashCode方法的主要作是为了配基于散列的一起正常运行,这样的散列包括HashSet、HashMap以及H
  • blog mysql按照中文拼音

    mysql按照中文拼音对于存储的字段采的是GBK字符的情况:order by name asc/desc对于存储的字段采的是utf-8字符的情况: order by convert(name using gbk) asc/des
  • blog 递归实现并两递增链表-并后保持递增

    递归实现并两递增链表-并后保持递增java描述数据结构:单链表算法:递归链表节点package club.test;/*** * 链表节点 * @author jiajia * */public class Node { publi
  • file springboot成mybatis将对象列化储存数据库(blob字段)demo

    <p>列化和反列化请参考:<a href="http://jiajiajia.club/file/blog/artical/yjw520/161" rel="noopener" target="_
  • ofc vue使v-model(双向数据绑定)自动收表单数据

    vue使v-model(双向数据绑定)自动收表单数据
  • blog 选择 - 数据结构和算法

    算法思想: 对冒泡的一种改进,每次从没有a中拿取一个最大或最小的元素,放入有b中,直到a中的元素被取完 算法描述: 变量i遍历整个数组,变量j遍历i后面的数组,每次遍历i初始k=i,每次发现a[k]比a[
  • blog 冒泡 - 数据结构与算法

    算法思想: 每次从没有a中拿取一个最大或最小的元素,放入有b中,直到a中的元素被取完 算法描述: 变量i遍历整个数组,变量j遍历i后面的数组,每次交换i比j大的元素,使得i遍历过的数组元素有,直至整个数组被
  • blog java之HashMap理解和分析

    1.HashMap的构造函数 1.public HashMap() public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fiel