zoukankan      html  css  js  c++  java
  • (一道面试题)对一个对象数组进组排序

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

    一.编写一个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()+" ");
    	}
    }
    }
    

     四.实验结果:

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

  • 相关阅读:
    使用docker试用各种软件及docker-ES设置
    Atom读写MarkDown插件选择,以及墙内安装markdown-preview-enhanced,及markdown和mermaid使用教程
    杂谈迁移tomcat项目到docker,以及遇到的问题
    MongoSpark 28799错误
    MongoDB运维心得(一)
    Ubuntu16.04 appstreamcli错误
    MongoExport后的负载均衡问题查询及解决:can't accept new chunks because there are still 2 deletes from previous migration
    MongoDB集群单mongos的问题总结
    Linux上不了网的几个排查点
    git忽略某些文件的几种方法
  • 原文地址:https://www.cnblogs.com/hckblogs/p/7840826.html
Copyright © 2011-2022 走看看