众所周知,冒泡排序法在一般数组中就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();

}

}

运行结果如下:

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

  1. 如何使用 Java 删除 ArrayList 中的重复元素

    如何使用 Java 删除 ArrayList 中的重复元素 (How to Remove Duplicates from ArrayList in Java) Given an ArrayList w ...

  2. Java删除ArrayList中的重复元素

    Java删除ArrayList中的重复元素的2种方法 ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇到那种必 ...

  3. Java 删除ArrayList中重复元素,保持顺序

    // 删除ArrayList中重复元素,保持顺序          public static List<Map<String, Object>> removeDuplicat ...

  4. 如何在Java的Filter中注入Service???

    今天在做用户使用cookie自动登录的时候,发现在LoginFilter中读取到cookie以后要进行查询数据库然后进行用户名和密码的比对,查询数据库肯定要用到Service和Dao,一开始我以为在s ...

  5. java关于ArrayList中toArray方法的使用

    先来看下面这段程序 Collection collect= new ArrayList();   collect.add("小黑");   collect.add("小白 ...

  6. Java 在PDF中添加水印

    在日常工作和学习中,PDF的普及给人们带来了极大的便利,但同时也出现了很多问题. PDF文件容易复制和传播,版权难以保护. 在海量文件中也很难区分信息,例如,你有没有打开一个文件夹,里面有这么多同名的 ...

  7. 面试官:如何在Integer类型的ArrayList中同时添加String、Character、Boolean等类型的数据? | Java反射高级应用

    原文链接:原文来自公众号:C you again,欢迎关注! 1.问题描述     "如何在Integer类型的ArrayList中同时添加String.Character.Boolean等 ...

  8. 如何在JAVA中实现一个固定最大size的hashMap

    如何在JAVA中实现一个固定最大size的hashMap 利用LinkedHashMap的removeEldestEntry方法,重载此方法使得这个map可以增长到最大size,之后每插入一条新的记录 ...

  9. 【Java学习笔记】<集合框架>定义功能去除ArrayList中的重复元素

    import java.util.ArrayList; import java.util.Iterator; import cn.itcast.p1.bean.Person; public class ...

随机推荐

  1. centos6.5 修改java环境变量

    [root@m1 ~]# cat /etc/profile export JAVA_HOME=/usr/local/soft/jdkexport PATH=$JAVA_HOME/bin:$PATH e ...

  2. CORS协议与Spring注解的冲突

    众所周知,HTML5的CORS协议,支持各种request method,远胜于仅支持get方式的JSONP. 但今天,我用CORS协议,却一直不成功. 跨域异常,如图 POST http://10. ...

  3. A comparison of local caches (1) 【本地缓存之比较 (1)】

    1. Spring local cache   [Spring 本地缓存] Spring provided cacheable annotation since 3.1. It's very supe ...

  4. MAVEN总结,整合Eclipse以及配置私服

    对maven的理解 我们知道maven是一个项目管理工具,其核 心特点就是通过maven可以进行jar包的依赖管理,保证jar包版本的一致性,以及可以使多个项目共享jar包,从而能够 在开发大型jav ...

  5. Rhythmbox音乐播放器常见问题

    一.歌名中文乱码 对于所有用gstreamer做后端的播放器,如Rhythmbox, 设置如下的环境变量后即可正确读取mp3中GBK编码的id3 tag. export GST_ID3_TAG_ENC ...

  6. textarea的中文输入判断与搜狗输入法的特殊行为

    虽然要讲解的知识点是通用的,但是还是要介绍下我的应用场景和测试环境. 0.1 应用场景和测试环境 我的应用是一块使用Html Canvas开发的黑板,在黑板上实现简单的文字编辑功能. 操作系统:win ...

  7. v9手机版文章内容不显示

    方法一: 打开PHPCMS v9的/phpcms/templates/default/wap/show.html页面, 将网页中的{$content}替换为:{$rs['content']} 这样wa ...

  8. angular中的$q服务

    $q的一共有四个api: 1.$q.when(value, successFn, errorFn, progressFn),返回值为一个promise对象 --value可以是一个任意数据,也可以是一 ...

  9. Elasticsearch5.0.1安装

    最新研究了下ES5.0,ES就是为高可用和可扩展而生的,你可以很方便的增加也减少一个节点.顺便记录下安装过程,也方便以后查看. 1            安装部骤 1.1    安装JDK ES依赖于 ...

  10. laravel中token的使用方式

    在form表单里提交表单时,可 <form action="" method="post"> <?php  echo csrf_field() ...