collection-大神请进,帮忙看下这个Collection的排序。

问题描述

大神请进,帮忙看下这个Collection的排序。

package com.jeffge;

import java.util.*;

public class StringSorting {
public static void main(String[] args) {
ArrayList persons = new ArrayList();
persons.add(new Person("Sam", 25));
persons.add(new Person("Sam", 35));
persons.add(new Person("Tom", 25));
persons.add(new Person("Tom", 35));
persons.add(new Person("Jeff", 25));
persons.add(new Person("Jeff", 35));
persons.add(new Person("Herry", 25));
persons.add(new Person("Herry", 35));
persons.add(new Person("Kim", 25));
persons.add(new Person("Kim", 35));
persons.add(new Person("Matthew", 25));
persons.add(new Person("Matthew", 35));
persons.add(new Person("Chris", 25));
persons.add(new Person("Chris", 35));
persons.add(new Person("Jakes", 25));
persons.add(new Person("Jakes", 35));
persons.add(new Person("Josh", 25));
persons.add(new Person("Josh", 35));
String expected = persons.toString();
println(persons);
Collections.shuffle(persons);

    Collections.sort(persons, new PersonComparator());

    String result = persons.toString();

    println("It is now   : "+result);
    println("It should be: " + expected);

    if(result.equals(expected)){
        println("It works!");
    } else {
        println("Keep trying!");
    }

}

private static void println(Object s) {
    System.out.println(s);
}

private static class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return name + "-" + age ;
    }

}

private static class PersonComparator implements Comparator<Person> {
    @Override
    public int compare(Person a, Person b) {
        return 0;
    }
}

}
请问 最下面实现的那个Compare 接口 怎么写 才能执行呀。 先按照名字排序,如果名字一样,然后按照年龄排序

解决方案

private static class PersonComparator implements Comparator {
@Override
public int compare(Person a, Person b) {
if(a.name.equalsIgnoreCase(b.name)){
//年龄是按照从小到大的排列
if(a.age < b.age){
return -1;
}else if(a.age > b.age){
return 1;
}else{
return 0;
}
}else{
return a.name.compareTo(b.name);
}

}

解决方案二:

public int compare(Person a, Person b) {
if (a.name.equals(b.name))
return a.age.compareTo(b.age);
else
return a.name.compareTob.name;
}

解决方案三:

 public int compare(Person a, Person b) {
if (a.name.equals(b.name)) //名字相同按age排
return a.age.compareTo(b.age);
else
return a.name.compareTo(b.name); //按名字排
}

解决方案四:



     private static class PersonComparator implements Comparator<Person> {
    @Override
    public int compare(Person a, Person b) {
          return a.age.compareTo(b.age);
    }
}

解决方案五:

http://www.tutorialspoint.com/java/java_using_comparator.htm

解决方案六:

@兔子党-督察 麻烦大伙帮帮忙呀

解决方案七:

return a.age > b.age;

时间: 2024-08-30 05:16:37

collection-大神请进,帮忙看下这个Collection的排序。的相关文章

软件开发-JAVA在下载的时候报错,各位大神路过顺便帮忙看下吧

问题描述 JAVA在下载的时候报错,各位大神路过顺便帮忙看下吧 ClientAbortException: java.io.IOException at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:369) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:368) at org.apache.catalina.co

c++-大神请进,帮小孩看一下他的算法,点评点评。

问题描述 大神请进,帮小孩看一下他的算法,点评点评. 问题如下: 算法如下: Algorithm for the programming assignment #2 Algorithm for the game of absorb material Step1: Welcome the user and explain the purpose of how to use this program to play Step1a: Display a heading ("absorbing mate

eclipse-Eclipse常用技巧,Android大神请进!

问题描述 Eclipse常用技巧,Android大神请进! Eclipse中我用类名申明了一个对象,然后类中用到了这个类对象,怎么从这个类对象进入到那个类中啊,我看到别人双击一下怎么就进去了,求大神帮我,谢谢! 解决方案 你将光标移动到这个类实例上,然后按ctrl+鼠标左键点击,或者是shift,你自己试试 如果回答对您有帮助,请采纳 解决方案二: 按住ctrl,然后鼠标点击 解决方案三: ctrl+双击 亲 网上搜一下 eclipse 快捷键大全 上面全有 如果点不进去就是找不到 那个类了 你

求翻校内的墙,大神请进

问题描述 求翻校内的墙,大神请进 我所在的公司设置了网络墙,只能上规定的几个网站,其余的如知乎,豆瓣, 天涯之类的网站上不去,求破解. 解决方案 vpn搞起,豆荚加速器 解决方案二: vpn呀,翻墙神器,连不能看的网站都能上 解决方案三: http://bbs.liebao.cn/forum.php?mod=viewthread&tid=255579 解决方案四: 推荐蓝盾,可以翻墙,赛风可以修改VPN,都可以 解决方案五: 你可以使用VPN呀,这样什么网站都能上了 解决方案六: 下载green

游戏-关于Mecanim动画的 unity3d大神请进

问题描述 关于Mecanim动画的 unity3d大神请进 这两天在看mecanim动画 我在一个项目里做了两个人物模型 一个添加了mecanim一个没有 就是一个有骨骼动画 一个没有,然后弄成两个prefab之后BuildAssetBundle,在另外一个项目里动态加载进去.通过实验可以用,但是我发现了个问题就是BuildAssetBundle之后有动作的比没动作的资源大了不少.我想用个方法来保留一份动作资源,比如在导入的项目里保留一个Animator Controller,在脚本里动态地给A

反爬虫-菜鸟求助,大神请进:python爬取某东评论数据遇到的问题

问题描述 菜鸟求助,大神请进:python爬取某东评论数据遇到的问题 python爬取京东评论数据,爬10页的评论没问题,后面的评论就不断重复,到底是什么原因? 解决方案 先看是不是服务器返回的内容 然后就是你请求的参数有问题 所有重复请求 解决方案二: 应该是url没去重吧 解决方案三: 最近看到一个csdn的博客专门讲如何写电商爬虫的,地址是:http://blog.csdn.net/youmumzcs/article/details/51373830,楼主可以参考

pat1019数字黑洞,有一个测试点过不去,大神们帮我看下哪错了?谢谢

问题描述 pat1019数字黑洞,有一个测试点过不去,大神们帮我看下哪错了?谢谢 #include <stdio.h> #include <stdlib.h> int comp(const void *a,const void *b){ return *(int*)a-*(int*)b; } int main(){ int n,a[4]={0},i,x,y; scanf("%d",&n); do{ i=0; while(n!=0){ a[i]=n%10;

java写服务器端安卓写服务器端,两者如何进行对接,大神请进....

问题描述 java写服务器端安卓写服务器端,两者如何进行对接,大神请进.... 大神都会点开这个帖子的,所以我就开门见山了 1. java写服务器端如何返回手机安卓用户端能接受的数据形式? 2. 如何处理手机端返回的数据 3. 如何对接起来 解决方案 一切都是json,后台返回json前台解析 解决方案二: 用socket写的吗? 解决方案三: 我们公司统统用json来回传递

exists-mysql问题 求 大神们 帮我看下谢谢了

问题描述 mysql问题 求 大神们 帮我看下谢谢了 delect from v_product WHERE EXISTS(SELECT category_id,p_type,p_from FROM(SELECT * FROM v_product WHERE p_tid=201504250838220)a) 解决方案 You have an error in your SQL syntax; check the manual that corresponds to your MySQL serv