「按年龄排序java」按年龄排序为什么会乱

博主:adminadmin 2022-11-29 03:23:07 55

本篇文章给大家谈谈按年龄排序java,以及按年龄排序为什么会乱对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java怎样用数组创建对象,并对对象里的属性排序?

public class Employee {

public Employee() {

super();

// TODO Auto-generated constructor stub

}

public Employee(String no, String name, Float salary) {

super();

this.no = no;

this.name = name;

this.salary = salary;

}

private String no;// 工号

private String name;// 姓名

private Float salary = 0f;// 工资

public String getNo() {

return no;

}

public void setNo(String no) {

this.no = no;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Float getSalary() {

return salary;

}

public void setSalary(Float salary) {

this.salary = salary;

}

@Override

public String toString() {

return "Employee [no=" + no + ", name=" + name + ", salary=" + salary + "]";

}

}

public class TestEmployee {

public static void main(String[] args) {

TestEmployee testEmployee = new TestEmployee();

Employee[] emps = testEmployee.getEmployees();

emps = testEmployee.orderBySalary(emps);

for(int i = 0; i  emps.length; i++) {

System.out.println(emps[i]);

}

}

/**

 * 获取一个随机工资数 3-5K

 * @return

 */

public Float getRandomFloat() {

DecimalFormat dcmFmt = new DecimalFormat("0.00");

Random rand = new Random();

float f = 0f;

while(f  3000) {

f = rand.nextFloat() * 5000;

}

return Float.parseFloat(dcmFmt.format(f));

}

/**

 * 获取员工

 * @return 返回Employee[] 数组  length = 50

 */

public Employee[] getEmployees() {

Employee[] emps = new Employee[50];

for(int i = 0; i  50 ; i++) {

String no = "no" + i;// 初始化员工号

String name = "name" + i;// 初始化姓名

Float salary = getRandomFloat();// 随机产生一个工资数

emps[i] = new Employee(no, name, salary);

}

return emps;

}

/**

 * 根据工资高低 进行排序

 * @param emps

 * @return

 */

public Employee[] orderBySalary(Employee[] emps) {

for(int i = 0; i  emps.length; i++) {

for(int j = i + 1; j  emps.length; j++) {

if(emps[i].getSalary()  emps[j].getSalary()) {

Employee temp = emps[i];

emps[i] = emps[j];

emps[j] = temp;

}

}

}

return emps;

}

}

java新建Student类,创建三个对象,使用对象年龄进行排序

新建一个学生类

public class Student {

private String name;

private int age;

public Student(String name, int age) {

this.name = name;

this.age = age;

}

public String toString() {

return "Student [name=" + name + ", age=" + age + "]";

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

然后新建一个测试类; 在测试类中,使用了2种方案进行排序,

import java.util.ArrayList;

import java.util.Comparator;

public class Test {

public static void main(String[] args) {

ArrayListStudent list = new ArrayListStudent();

list.add(new Student("张三", 9));

list.add(new Student("李四", 8));

list.add(new Student("王五", 10));

list.add(new Student("赵六", 7));

list.add(new Student("田七", 11));

sortFun1(list);

sortFun2(list);

}

//1: 比较传统 的方式

public static void sortFun1(ArrayListStudent list) {

System.out.println("从大到小排列");

list.sort(new ComparatorStudent() {

@Override

public int compare(Student o1, Student o2) {

return -(o1.getAge()-o2.getAge());//添加负号,从小到大

}

});

for (Student student : list) {

System.out.println(student);

}

}

//2. java 8 流处理方式

public static void sortFun2(ArrayListStudent list) {

System.out.println("从小到大排列");

list.stream().sorted((o1,o2)-o1.getAge()-o2.getAge()).forEach(System.out::println);

}

}

用java写一个冒泡排序,封装一个学生,学生有属性,姓名,年龄,已学生年龄排序

请楼主稍微看一下代码,理解一下构造方法,方法覆盖和封装,不然可能会看不懂我的代码,尽管我的代码是菜鸟级别的.

public class Test {

@SuppressWarnings("null")

public static void main(String[] args) {

Student[] students = new Student[4];//创建一个学生数组,以下进行初始化(了解一下构造方法)

students[0] = new Student("test1", 16);

students[1] = new Student("test2", 15);

students[2] = new Student("test3", 19);

students[3] = new Student("test4", 14);

//接下来就是进行冒泡排序了,其实和普通的冒泡排序是一样的

Student tempStudent = null;//用来做中间替换的

for (int i = 0; i students.length; i++) {

for (int j = 0; j students.length; j++) {

if (students[i].getAge()students[j].getAge()) {

tempStudent = students[i];

students[i]=students[j];

students[j]=tempStudent;

}

}

}

for (Student student : students) {

System.out.println(student);

}

}

}

//封装一个学生类

class Student {

private String name;

private int age;

public Student(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return name+"\t"+age;

}

}

java中调用排序方法

首先,你自定义的方法不能有Main(),你的程序跟不久不能运行;

Person类的定义

public class Person {

private String _name;

private int _age;

public String getName()

{

return _name;

}

public String setName(String name)

{

return this._name = name;

}

public int getAge()

{

return _age;

}

public int setAge(int age)

{

return this._age = age;

}

}

//

import java.util.Arrays;

import java.util.Scanner;

public class JAV{

public static void info(Person p)

{

System.out.println(p.getAge() + " " + p.getName());

}

public static void main(String[] args) {

Person[] ps = new Person[3];

int[] AGE = new int[3];

Scanner input = new Scanner(System.in);

for(int i=0 ; i ps.length; i++){

ps[i] = new Person();

System.out.print("请输入名字: ");

String Name = input.next();

System.out.print("请输入年龄: ");

int Age = input.nextInt();

ps[i].setName(Name);

ps[i].setAge(Age);

//将年龄保存在数组里

AGE[i] = Age;

}

/**

* 关于年龄排序,其实没必要写冒泡排序方法,

* Java有封装好的由小到大排序方法Arrays.sort()

*(该方法位于java.util.Arrays包),只需要调用就是了

*/

Arrays.sort(AGE); /*这就是给年龄排序*/

/*

* 输出年龄最大的人的信息

* */

int agetemp = AGE[AGE.length-1];

for(int i=0;i3;i++)

if(ps[i].getAge()==agetemp)

{

System.out.print("按照年龄最大的人的信息:" );

info(ps[i]);

}

/*

* 按照年龄从小到大输出每个人信息

* */

System.out.println("按照年龄从小到大输出每个人信息:");

for(int i=0;i3;i++)

{

for(int j=0;j3;j++)

{

if(ps[i].getAge()==AGE[j]) info(ps[i]);

}

}

}

}

运行结果:

请输入名字: 我们

请输入年龄: 15

请输入名字: 你们

请输入年龄: 21

请输入名字: 大家

请输入年龄: 19

按照年龄最大的人的信息:21 你们

按照年龄从小到大输出每个人信息:

15 我们

21 你们

19 大家

java重写比较器,传入参数,如年龄或姓名,分别按其排序,

你的意思是:传入参数,如年龄或姓名,然后进行 年龄或者姓名排序吧

你这个参数实际却没有作用,你为什么不传入 1/2/ 3 分别表示按哪种方式排序。

具体比较方法:

public int compare(Person obj1,Person obj2){

int c=0;

if(假如姓名){

c=obj1.getName..compareTo(obj2.getName);

}

if(按年龄){

c=obj1.getAge.-obj2.getAge;

}

retrun c;

使用Java内置迭代器实现对学生信息的遍历,要求按学生年龄由大到小的次序输出学生信息。

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

/**

 * 通过实现comparable接口来比较多个对象的属性值,并按顺序输出

 * @author young

 *

 */

class Teacher implements ComparableTeacher {

private String no;

private String name;

private int age;

private String zy;

public Teacher(String no, String name, int age, String zy) {

super();

this.no = no;

this.name = name;

this.age = age;

this.zy = zy;

}

// 三个返回结果都要写出来

public int compareTo(Teacher o) {

if(this.age  o.age){

return -1;

}else if(this.age  o.age){

return 1;

}else {

return 0;

}

}

@Override

public String toString(){

return "姓名: " + this.name + ". 编号: " + this.no + ". 年龄: " + this.age

 + ". 专业: " + this.zy;

}

}

public class ComparableTest1 {

public static void main(String[] args) {

Teacher s1 = new Teacher("291", "张", 50, "音乐专业");

Teacher s2 = new Teacher("423", "李", 30, "计算机专业");

Teacher s3 = new Teacher("21", "王", 29, "机械专业");

Teacher s4 = new Teacher("445", "高", 34, "国贸专业");

ListTeacher list = new ArrayListTeacher();

list.add(s1);

list.add(s2);

list.add(s3);

list.add(s4);

Collections.sort(list);

System.out.println("按照年龄进行排序输出: ");

for(Teacher stu : list){

System.out.println(stu.toString());

}

}

}

按年龄排序java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于按年龄排序为什么会乱、按年龄排序java的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。