欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java线性表排序示例分享

程序员文章站 2024-02-23 11:42:10
大家可以先看一下这个静态方法public static void sort(list list, comparator

大家可以先看一下这个静态方法public static <t> void sort(list<t> list, comparator<? super t> c)

1.先定义一个模型:

复制代码 代码如下:

package model;

/**
 * user.java
 *
 * @author 梁wp 2014年3月3日
 */
public class user
{
    private string username;
    private int userage;

    public user()
    {
    }

    public user(string username, int userage)
    {
        this.username = username;
        this.userage = userage;
    }

    public string getusername()
    {
        return username;
    }

    public void setusername(string username)
    {
        this.username = username;
    }

    public int getuserage()
    {
        return userage;
    }

    public void setuserage(int userage)
    {
        this.userage = userage;
    }
}

2.然后定义一个比较器,实现java.util.comparator接口,在compare()方法编写比较规则:

复制代码 代码如下:

package util;

import java.util.comparator;

import model.user;

/**
 * comparatoruser.java
 *
 * @author 梁wp 2014年3月3日
 */
public class comparatoruser implements comparator<user>
{
    @override
    public int compare(user arg0, user arg1)
    {
        // 先比较名字
        int flag = arg0.getusername().compareto(arg1.getusername());

        // 如果名字一样,就比较年龄
        if (flag == 0)
        {
            return arg0.getuserage() - arg1.getuserage();
        }
        return flag;
    }
}

3.排序的时候用java.util.collections里面的sort(list list, comparator c)方法:

复制代码 代码如下:

package test;

import java.util.arraylist;
import java.util.collections;
import java.util.list;

import util.comparatoruser;
import model.user;

/**
 * testapp.java
 *
 * @author 梁炜平 2014年3月3日
 */
public class testapp
{
    public static void main(string[] arg0)
    {
        list<user> userlist = new arraylist<user>();

        // 插入数据
        userlist.add(new user("a", 15));
        userlist.add(new user("b", 14));
        userlist.add(new user("a", 14));

        // 排序
        collections.sort(userlist, new comparatoruser());

        // 打印结果
        for (user u : userlist)
        {
            system.out.println(u.getusername() + " " + u.getuserage());
        }
    }
}

4.运行结果:

复制代码 代码如下:

a 14
a 15
b 14