「按年龄排序java」按年龄排序为什么会乱
本篇文章给大家谈谈按年龄排序java,以及按年龄排序为什么会乱对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java怎样用数组创建对象,并对对象里的属性排序?
- 2、java新建Student类,创建三个对象,使用对象年龄进行排序
- 3、用java写一个冒泡排序,封装一个学生,学生有属性,姓名,年龄,已学生年龄排序
- 4、java中调用排序方法
- 5、java重写比较器,传入参数,如年龄或姓名,分别按其排序,
- 6、使用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的信息别忘了在本站进行查找喔。
发布于:2022-11-29,除非注明,否则均为
原创文章,转载请注明出处。