• (一道面试题)对一个对象数组进组排序


    这是我在一个面试初级工程师的时候遇到的一个问题,觉得在项目中都没怎么遇到.

    一.编写一个Student对象

    public class Student {
      private String name;
      private Integer age;
    /**
     * @return the name
     */
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * @return the age
     */
    public Integer getAge() {
        return age;
    }
    /**
     * @param age the age to set
     */
    public void setAge(Integer age) {
        this.age = age;
    }
    /**
    
    * <p>Title: </p>
    
    * <p>Description: </p>
    
    * @param name
    * @param age
    
    */
    public Student(String name, Integer age) {
        super();
        this.name = name;
        this.age = age;
    }
    /* (non-Javadoc)
     * @see java.lang.Comparable#compareTo(java.lang.Object)
     */
    /* (non-Javadoc)
     * @see java.lang.Comparable#compareTo(java.lang.Object)
     */
    }

    二.编写测试类主要用到得时Collections这个辅助工具

    1.Collections.sort方法支持对对象进组排序

    2.使用方法:只要实现Comparator方法.

    3.实现目的:主要是告诉这个方法我要用什么方式进行对象的排序

    4.这里我将对学生的年龄进行排序,年龄相等的对名字再进行排序

    package com.hck.test;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    
    public class ArrayListDemo {
       public static void main(String[] args) {
    	//创建数组并且添加对象
    	List<Student> slist=new ArrayList<Student>();
    	slist.add(new Student("张三", 28));
    	slist.add(new Student("王五", 23));
    	slist.add(new Student("老六", 27));
    	slist.add(new Student("啊四", 21));
    	slist.add(new Student("大红", 21));
    	System.out.println("===排序前===");
    	for (Student student:slist) {
    		System.out.print(student.getName()+" ");
    	}
    	System.out.println();
        /**
         * Collections.sort方法支持对对象进组排序
         * 使用方法:只要实现Comparator方法.
         * 这个方法主要是告诉这个方法我要用什么方式进行对象的排序
         * 这里我将对学生的年龄进行排序,年龄相等的对名字再进行排序
         */
    	Collections.sort(slist, new Comparator<Student>() {
    		@Override
    		public int compare(Student o1, Student o2) {
    			//大于返回1
    			if(o1.getAge()>o2.getAge())
    			{
    				return 1;
    			}
    			//小于返回-1
    			if(o1.getAge()<o2.getAge())
    			{
    				return -1;
    			}
    			//等于的话比较name的大小
    			//compareTo返回值也是正数,0,负数
    			//对应的是大于,等于,小于
    		    return(o1.getName().compareTo(o2.getName()));		
    			// TODO Auto-generated method stub
    		}
    	});
    	System.out.println("===排序后===");
    	//增强for循环语句打印输出
    	for (Student student:slist) {
    		System.out.print(student.getName()+" ");
    	}
    }
    }
    

     四.实验结果:

    五.总结:这个主要是对数组熟悉程度的一个考察.

  • 相关阅读:
    PHP函数---$_Get()和$_Post()的用法
    python mysqldb 教程
    python+ mysql存储二进制流的方式
    Android项目 手机安全卫士(代码最全,注释最详细)之七 应用程序的更新安装
    约瑟夫环的两种实现
    80386的各种寄存器一览
    hdu 4741 Save Labman No.004 [2013年杭州ACM网络赛]
    物理DG主备库切换时遇到ORA-16139: media recovery required错误
    c# 获取全屏 中鼠标焦点的位置坐标
    hdu 4738 Caocao's Bridges(2013杭州网络赛丶神坑)
  • 原文地址:https://www.cnblogs.com/hckblogs/p/7840826.html
Copyright © 2020-2023  润新知