如何在java中用Arraylist中实现冒泡排序的问题
众所周知,冒泡排序法在一般数组中就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中实现冒泡排序的问题的更多相关文章
- 如何使用 Java 删除 ArrayList 中的重复元素
如何使用 Java 删除 ArrayList 中的重复元素 (How to Remove Duplicates from ArrayList in Java) Given an ArrayList w ...
- Java删除ArrayList中的重复元素
Java删除ArrayList中的重复元素的2种方法 ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇到那种必 ...
- Java 删除ArrayList中重复元素,保持顺序
// 删除ArrayList中重复元素,保持顺序 public static List<Map<String, Object>> removeDuplicat ...
- 如何在Java的Filter中注入Service???
今天在做用户使用cookie自动登录的时候,发现在LoginFilter中读取到cookie以后要进行查询数据库然后进行用户名和密码的比对,查询数据库肯定要用到Service和Dao,一开始我以为在s ...
- java关于ArrayList中toArray方法的使用
先来看下面这段程序 Collection collect= new ArrayList(); collect.add("小黑"); collect.add("小白 ...
- Java 在PDF中添加水印
在日常工作和学习中,PDF的普及给人们带来了极大的便利,但同时也出现了很多问题. PDF文件容易复制和传播,版权难以保护. 在海量文件中也很难区分信息,例如,你有没有打开一个文件夹,里面有这么多同名的 ...
- 面试官:如何在Integer类型的ArrayList中同时添加String、Character、Boolean等类型的数据? | Java反射高级应用
原文链接:原文来自公众号:C you again,欢迎关注! 1.问题描述 "如何在Integer类型的ArrayList中同时添加String.Character.Boolean等 ...
- 如何在JAVA中实现一个固定最大size的hashMap
如何在JAVA中实现一个固定最大size的hashMap 利用LinkedHashMap的removeEldestEntry方法,重载此方法使得这个map可以增长到最大size,之后每插入一条新的记录 ...
- 【Java学习笔记】<集合框架>定义功能去除ArrayList中的重复元素
import java.util.ArrayList; import java.util.Iterator; import cn.itcast.p1.bean.Person; public class ...
随机推荐
- Lambda语言篇 —— lambda, 方法引用, 目标类型和默认方法
本文介绍了Java SE 8中新引入的lambda语言特性以及这些特性背后的设计思想.这些特性包括: lambda表达式(又被成为"闭包"或"匿名方法") 方法 ...
- dns劫持分析
最近在做dns解析,关注的重点在查询域名ns记录上,异常日志中捕获到一个域名,dig查询: 查询请求类型为ns,dig结果确只有一条A记录.处于好奇,查询类型改为a类型: 这个域名dig 查询A记录, ...
- data.table包简介
data.table包主要特色是:设置keys.快速分组和滚得时序的快速合并.data.table主要通过二元检索法大大提高数据操作的效率,同时它也兼容适用于data.frame的向量检索法. req ...
- 由Find All References引发的思考。,
今天在研究C#代码问题的时候遇到了一个Visual Studio的小问题.在Visual Studio 2013中,使用Find All References功能不能找到同一类型不同版本的所有引用,具 ...
- 测序分析软件-trimmomatic的记录
1.下载相关软件,网址:http://www.usadellab.org/cms/index.php?page=trimmomatic,它有源代码和二进制两种文件(建议都下载,然后合并成一个文件,因为 ...
- UI篇之——用户体验
内容均为原创,转载请注明处处谢谢. 用户体验(User Experience,简称UX)是一个关于用户(users)以及交互(interactive)技术系统领域的整体概念.具体来说,它代表了一个网站 ...
- Jexus部署.Net Core项目
Jexus Jexus 即 Jexus Web Server,简称JWS,是Linux平台上 的一款ASP.NET WEB服务器.它是 Linux.Unix.FreeBSD 等非Windows系统架设 ...
- Linux centOS的vm虚拟机配置详细 中文版
这里以安装cenOS6.6 为例 如果想要需要cenos 6.6 ios文件的朋友看我的另一篇关于cenos6.6版本的下载详细 文中内容是摘抄自老男孩老师的<linux 跟老男孩学Linux运 ...
- 映射语句之INSERT语句
1.一个 INSERT SQL 语句可以在<insert>元素在映射器 XML 配置文件中配置 例子: <insert id="insertStudentWithId&qu ...
- 并归排序 (Java版本,时间复杂度为O(n))
自己上网查了一下并归排序的定义,把两个排序好的数组重新组成一个排序好的数组就是并归排序, 实现的方式有和多种,自己思考了一下,用java实现了一版本,思路如下,既然是排序好的,只需要依次比较两个数组, ...