众所周知,冒泡排序法在一般数组中就3步,

 if(a<b){
temp=a;
a=b;
b=temp;
}

然而,在集合中就不是简单的交换一下了,因为交换之后,必须保证新的值被重新设置到集合中去。那么变难了吗?实际上更简单了:

 if(a<b){
workerlist.get(j).setSc(b);
workerlist.get(j+1).setSc(a);
}

原理还是交换,不过不需要媒介temple 了。

具体代码见下:

*********************工人类**********************

 package com.xtkj.worker;
public class Worker{
int id;
String name;
int age;
double salary; public Worker(){} //构造方法
public Worker(int id,String name, int age,double salary ) {
this.id = id;
this.name = name;
this.age = age;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getSc() {
return salary;
}
public void setSc(double salary) {
this.salary = salary;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} public Worker getNext(){
return this.getNext();
} }

*******************方法类(这里只讲解冒泡排序)***************

 package com.xtkj.worker;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Method {
public static List<Worker> workerlist = new ArrayList<Worker>();
//按薪水由高到低排序
double temp;
double a=0;
double b=0;
void sort(){
System.out.println("按员工薪水从高到低排序结果为:");
for(int i=0;i<workerlist.size()-1;i++){
for(int j=0;j<workerlist.size()-1-i;j++){
a=workerlist.get(j).getSc();
b=workerlist.get(j+1).getSc();
if(a<b){
// temp=a;
workerlist.get(j).setSc(b); //注意:这里是把值设置到集合中去
// a=b;             
workerlist.get(j+1).setSc(a); //简单的 a与b 交换,改变的只是从集合中取出来的结果,集合里面的元素并没有改变
// b=temp;
}
}
}
}

*****************界面类(测试类)**********************


package com.xtkj.worker;

import java.util.Scanner;

public class Main {

/**

* @param args

*/

public static void main(String[] args) {

Method method = new Method();

boolean b = true;

while(b){

System.out.println();

System.out.println("*********************欢迎进入职员薪水管理系统***********************");

System.out.println("请选择以下操作:");

System.out.println("1.添加新员工");

System.out.println("2.查询员工信息");

System.out.println("3.显示所有员工信息");

System.out.println("4.修改员工薪水");

System.out.println("5.删除员工信息");

System.out.println("6.薪水由高到低排列");

System.out.println("7.统计员工平均工资和最低、最高工资");

System.out.println("8.退出本系统");

Scanner reader=new Scanner(System.in );

System.out.println("请输入功能:");

int ab = reader.nextInt();

switch(ab)

{

case 1:

method.add();

break;

case 2:

method.find();

break;

case 3:

method.showAll();

break;

case 4:

method.updatesal();

break;

case 5:

method.delete();

case 6:

method.sort();

break;

case 7:

method.statics();

break;

case 8:

System.out.println("已退出职员薪水管理系统!");

b = false;

}

}

Worker wr=new Worker();

}

}

运行结果如下:

最新文章

  1. O365(世纪互联)SharePoint 之站点个性化
  2. Connection broken for id 62, my id = 70, error =
  3. noip模拟赛(一)宠物之战
  4. zw版【转发&#183;台湾nvp系列Delphi例程】HALCON CheckDifference
  5. 如何查看与刷新DNS本地缓存
  6. 安装linux系统并配置那点事
  7. Codeforces Round #114 (Div. 1) B. Wizards and Huge Prize 概率dp
  8. 基于TCP协议的客户端
  9. Basic Calculator,Basic Calculator II
  10. DAX基础入门 - 30分钟从SQL到DAX -- PowerBI 利器
  11. hadoop小知识札记
  12. RPC与实践(thrift在windows的编译/安装--c++版)
  13. jdbc问题:Access denied for user &#39;&#39;@&#39;localhost&#39;&#39;是因为没输入账户和密码
  14. TFTP Server的搭建和使用(Fedora)
  15. iOS 开发笔记-控制器翻页
  16. 使用 spring-boot-devtools 进行热部署
  17. Boost.Asio 网络编程([译]Boost.Asio基本原理)
  18. ASP.NET MVC3控制器传递匿名对象到视图实例
  19. Oracle执行SQL语句的过程
  20. python对列表中的字典进行排序

热门文章

  1. VR大时代-全景智慧城市搭建是一个任重而道远的任务
  2. python——快速找出两个电子表中数据的差异
  3. Java对字符串进行的操作
  4. Python教程(2.5)——控制台输入
  5. OVS + kernel datapath 的安装
  6. angularJS ng-change错误的解决方案
  7. html5-表格的建立
  8. discuz用户登录不响应,提示nginx gateway timeout解决方法
  9. Android之使用JAVA占位符格式数据(很实用)
  10. Realm的简单使用