java中如何在Arraylist中实现冒泡排序的问题

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

1 if(a<b){
2                         temp=a;
3                         a=b;
4                         b=temp;
5 }

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

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

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

具体代码见下:

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

 1 package com.xtkj.worker;
 2 public class Worker{
 3     int id;
 4     String name;
 5     int age;
 6     double salary;
 7
 8     public  Worker(){}   //构造方法
 9     public Worker(int id,String name, int age,double salary ) {
10         this.id = id;
11         this.name = name;
12         this.age = age;
13         this.salary = salary;
14     }
15     public String getName() {
16         return name;
17     }
18     public void setName(String name) {
19         this.name = name;
20     }
21     public int getId() {
22         return id;
23     }
24     public void setId(int id) {
25         this.id = id;
26     }
27     public double getSc() {
28         return salary;
29     }
30     public void setSc(double salary) {
31         this.salary = salary;
32     }
33     public int getAge() {
34         return age;
35     }
36     public void setAge(int age) {
37         this.age = age;
38 }
39
40     public Worker getNext(){
41         return this.getNext();
42     }
43
44 }

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

 1 package com.xtkj.worker;
 2 import java.util.ArrayList;
 3 import java.util.List;
 4 import java.util.Scanner;
 5 public class Method {
 6     public static List<Worker> workerlist = new ArrayList<Worker>();
 7     //按薪水由高到低排序
 8         double temp;
 9         double a=0;
10         double b=0;
11         void sort(){
12             System.out.println("按员工薪水从高到低排序结果为:");
13             for(int i=0;i<workerlist.size()-1;i++){
14                 for(int j=0;j<workerlist.size()-1-i;j++){
15                     a=workerlist.get(j).getSc();
16                     b=workerlist.get(j+1).getSc();
17                     if(a<b){
18 //                        temp=a;
19                         workerlist.get(j).setSc(b);  //注意:这里是把值设置到集合中去
20 //                        a=b;             
21                         workerlist.get(j+1).setSc(a); //简单的 a与b 交换,改变的只是从集合中取出来的结果,集合里面的元素并没有改变
22 //                        b=temp;
23                     }
24                 }
25             }
26         }

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


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();

}

}

运行结果如下:

时间: 2024-08-08 21:07:47

java中如何在Arraylist中实现冒泡排序的问题的相关文章

wpf中如何在xaml中绑定cs中类的属性

cs代码:/// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); ContentGrid.DataContext = this; this.Path = "数据绑定"; } public string Path { get; set;

java之如何在eclipse中新建对象时自动补全

比如我们在输入: new Employee(); 这时按下ctrl+1, 选择第一项即可: Employee employee = new Employee(); 原文地址:https://www.cnblogs.com/xiximayou/p/12230554.html

iOS开发中如何在UITextView中添加默认文字

在UITextField中自带placeholder属性,可以用于提示输入框信息.但是UITextView并不具备此功能介绍两种方法来实现:第一种:初始化UITextView//首先定义UITextView  UITextView *textView = [[UITextView alloc] init];  textView.font = [UIFont systemFontOfSize:14];  textView.frame =CGRectMake(10, 0, cell.contentV

Android中如何在ViewPager中使动态创建的ImageView铺满屏幕

最近在做东西的时候,有一个要求,就是把用于在ViewPager里面轮播的图片铺满屏幕,但是中间遇到的问题是,ImageView与屏幕之间总是有空隙,情况如下图所示: 当时第一反应时考虑用LayoutParam,可是几经尝试无果,后来在网上找到了解决方案,只要在创建ImageView的时候,把ImageView的属性ScaleType设为FIT_XY然后问题就解决了,具体的代码如下: ImageView imageView=new ImageView(context); imageView.set

Android中如何在Eclipse中关联源代码?(图文)

关联源代码 1.删除工程里面的Android Depandencies,删除后会报错,不要理会.看下面 2.添加libs目录下的Android-support-v4.jar包 选中-->右键-->build path-->add to build path 3.关联源代码 目录:C:\android\adt-bundle-windows-x86_64-20130219\sdk\extras\android\support\v4\src\java 点击ViewPager类,出现图标: 大家

winform中如何在TextBox中只能输入数字(可以带小数点)

可以采用像web表单验证的方式,利用textbox的TextChanged事件,每当textbox内容变化时,调用正则表达式的方法验证,用一个label在text后面提示输入错误,具体代码如下: private void textBox1_TextChanged(object sender, EventArgs e) { if (textBox1.Text.Trim() != "") { if (!Validate(textBox1.Text.Trim(), @"^(-?\d

ArrayList中重复元素处理方法.[Java]

1.使用HashSet删除ArrayList中重复的元素 private static void sortByHashSet() { ArrayList<String> listWithDuplicateElements = new ArrayList<String>(); listWithDuplicateElements.add("JAVA"); listWithDuplicateElements.add("J2EE"); listWit

如何在Angular2-cli中使用插件(不使用配置)

重要点: 要把插件放在src/assets文件中 如何在angular-cli中使用jquery插件 a.在index.html中引入 <script  src="./assets/jquery-1.8.3.min.js"></script> b. 在要使用jquery的组件中声明(XX.component.ts) declare var $ : any; c.导入onInit import { OnInit} from '@angular/core'; d.输

如何在CAD中绘制曲线?并保存为dwg 格式的?

如何在CAD中绘制曲线?并保存为dwg 格式的?在CAD绘图中,很多的小伙伴们都不知道如何在CAD中绘画出一个S形的曲线.假如你的主管让你完成这样的一份工作,你不可能和你的主管说我不会吧?那你可能就要凉凉呢.那如何在CAD中绘制曲线?并保存为dwg格式呢?具体要怎么操作?下面就来教教大家,想要了解的朋友就一起来看看吧. 步骤一:在电脑桌面任意启动一个浏览器,打开浏览器,在浏览器中搜索迅捷CAD编辑器,鼠标点击官网进入,下载并进行安装.最后启动CAD软件. 步骤二:启动软件之后,在软件页面的正上方