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()+" ");
    	}
    }
    }
    

     四.实验结果:

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

  • 相关阅读:
    票房和口碑称霸国庆档,用 Python 爬取猫眼评论区看看电影《我和我的家乡》到底有多牛
    用 Python 写个七夕表白神器
    3. GC复制算法
    一个粗糙的RPC框架设计思路
    503Service Unavailable
    centos 7.8下载地址
    海康摄像头SDK在Linux、windows下的兼容问题(二)已解决
    海康摄像头SDK在Linux、windows下的兼容问题
    二重指针
    【JavaScript 对象03】
  • 原文地址:https://www.cnblogs.com/hckblogs/p/7840826.html
Copyright © 2011-2022 走看看