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


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

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

     四.实验结果:

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

  • 相关阅读:
    15第十四章:Docker轻量级可视化工具Portainer
    14第十三章:Dockercompose容器编排
    01第一章:【01】设计模式前言
    16第十五章:Docker容器监控
    13第十二章:Docker网络
    00设计模式【目录】
    03第一章:【02】单一职责原则(SRP)
    12第十一章:Docker微服务实战
    02第一章:【01】设计模式七大原则
    node2vec: Scalable Feature Learning for Networks
  • 原文地址:https://www.cnblogs.com/hckblogs/p/7840826.html
Copyright © 2020-2023  润新知