- 浏览: 850534 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (379)
- struts (5)
- hibernate (16)
- spring (16)
- ssh (20)
- MySQL (16)
- 数据库脚本 (2)
- DownLoad (1)
- GAE (5)
- Java (103)
- LoadRunner (2)
- VF (1)
- 学习资料 (24)
- 软件使用 (21)
- 通信类 (4)
- 生活 (3)
- J2ME (1)
- 心理学 (1)
- Linux (26)
- Android (3)
- Oracle (1)
- 面向对象概念&面试准备 (11)
- ExtJs (2)
- Google Map (1)
- Flex (47)
- 算法研究 (1)
- share (20)
- python (1)
- MongoDB (7)
- centos6 (13)
- C++ (8)
- DB2 (3)
- C# (1)
- 代码片段 (24)
- Lucene (2)
- php (1)
- NodeJS (1)
- Express (1)
最新评论
-
shua1991:
已阅,我表示同意。
Eclipse统计代码行数 -
nakedou:
写的不错,挺详细的
在CentOS中使用 yum 安装MongoDB及服务器端配置 -
sjp524617477:
好方法
Eclipse统计代码行数 -
simpletrc:
<script>ale ...
Java写到.txt文件,如何实现换行 -
csdn_zuoqiang:
Apache Ftp Server,目前是1.0.4,非常好的 ...
Apache FtpServer在64位系统下服务不能启动解决方法
自定义(复杂)类型,如果遇到按照不同的规则进行排序,可以参照以下的方法。
参考资料:http://z-jianwen.iteye.com/blog/616316
在此,举一例:
package com; public class Goods { // 定义全参构造器 public Goods(int _num,int _weigth,int _value){ this.setNum(_num); this.setValue(_value); this.setWeigth(_weigth); } // 定义方法,获得单位价值 public int getPervalue(){ int perValue = this.value/this.weigth; return perValue; } @Override public String toString() { return "Goods[" + this.getNum() + "] : weight = " + this.getWeigth() + " value = " + this.getValue(); } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public int getWeigth() { return weigth; } public void setWeigth(int weigth) { this.weigth = weigth; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } // 属性 private int num; private int weigth; private int value; }
package comparator; import java.util.Comparator; import com.Goods; public class PerValueComparator implements Comparator<Goods> { @Override public int compare(Goods o1, Goods o2) { // 单位价值大的排前面 if (o1.getPervalue() != o2.getPervalue()) { return o2.getPervalue() - o1.getPervalue(); }else { // 如果两者的单位价值相等,则重量小的排前面 return o1.getWeigth() - o2.getWeigth(); } } }
package comparator; import java.util.Comparator; import com.Goods; public class ValueComparator implements Comparator<Goods> { @Override public int compare(Goods o1, Goods o2) { // 价值大的排前面 if (o1.getValue() != o2.getValue()) { return o2.getValue() - o1.getValue(); }else { // 如果两者的价值相等,则重量小的排前面 return o1.getWeigth() - o2.getWeigth(); } } }
package comparator; import java.util.Comparator; import com.Goods; public class WeightComparator implements Comparator<Goods> { @Override public int compare(Goods o1, Goods o2) { // 重量小的排前面 if (o1.getWeigth() != o2.getWeigth()) { return o1.getWeigth() - o2.getWeigth(); }else { // 如果两者的重量相等,则价值大的排前面 return o2.getValue() - o1.getValue(); } } }
package test; import java.util.ArrayList; import java.util.Collections; import com.Goods; import comparator.PerValueComparator; import comparator.ValueComparator; import comparator.WeightComparator; public class TestCompare { public static void main(String[] args) { ArrayList<Goods> list = new ArrayList<Goods>(); list.add(new Goods(1,20,30)); list.add(new Goods(2,8,10)); list.add(new Goods(3,10,15)); list.add(new Goods(4,30,35)); list.add(new Goods(5,5,8)); list.add(new Goods(6,30,45)); list.add(new Goods(7,18,10)); list.add(new Goods(8,4,5)); System.out.println("---------- before sort ----------"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } // 根据重量从小到大排列 Collections.sort(list, new WeightComparator()); System.out.println("---------- 根据重量从小到大排列 ----------"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } // 根据价值从大到小排列 Collections.sort(list, new ValueComparator()); System.out.println("---------- 根据价值从大到小排列 ----------"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } // 根据单位价值从大到小排列 Collections.sort(list, new PerValueComparator()); System.out.println("---------- 根据单位价值从大到小排列 ----------"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
---------- before sort ---------- Goods[1] : weight = 20 value = 30 Goods[2] : weight = 8 value = 10 Goods[3] : weight = 10 value = 15 Goods[4] : weight = 30 value = 35 Goods[5] : weight = 5 value = 8 Goods[6] : weight = 30 value = 45 Goods[7] : weight = 18 value = 10 Goods[8] : weight = 4 value = 5 ---------- 根据重量从小到大排列 ---------- Goods[8] : weight = 4 value = 5 Goods[5] : weight = 5 value = 8 Goods[2] : weight = 8 value = 10 Goods[3] : weight = 10 value = 15 Goods[7] : weight = 18 value = 10 Goods[1] : weight = 20 value = 30 Goods[6] : weight = 30 value = 45 Goods[4] : weight = 30 value = 35 ---------- 根据价值从大到小排列 ---------- Goods[6] : weight = 30 value = 45 Goods[4] : weight = 30 value = 35 Goods[1] : weight = 20 value = 30 Goods[3] : weight = 10 value = 15 Goods[2] : weight = 8 value = 10 Goods[7] : weight = 18 value = 10 Goods[5] : weight = 5 value = 8 Goods[8] : weight = 4 value = 5 ---------- 根据单位价值从大到小排列 ---------- Goods[8] : weight = 4 value = 5 Goods[5] : weight = 5 value = 8 Goods[2] : weight = 8 value = 10 Goods[3] : weight = 10 value = 15 Goods[1] : weight = 20 value = 30 Goods[6] : weight = 30 value = 45 Goods[4] : weight = 30 value = 35 Goods[7] : weight = 18 value = 10
发表评论
-
微信JS
2013-10-26 21:17 2115<div class="iteye-blog- ... -
ubuntu下MySQL用source命令导入sql文件出现乱码解决方法
2012-11-18 23:46 1617首先建立数据库的时候指明数据库编码如: CREA ... -
RandomAccessFile
2012-10-18 18:16 1002public void run() { try { ... -
java中多种方式读文件
2012-10-18 16:53 1004java中多种方式读文件一、多种方式读文件内容。1、按字节读取 ... -
FileChannelMain
2012-10-15 18:12 1126package scan; import java ... -
Apache FtpServer在64位系统下服务不能启动解决方法
2012-06-10 21:29 6952Apache FTPServer是一款用Java开发的 ... -
Java 集合类
2012-06-07 22:03 1902Java 集合类 1. 为什么要了解J ... -
short、int、long与byte之间的转换工具类
2012-05-31 11:05 4547/** * 各基础类型与byte之间的转换 * ... -
Linux Mint 13 配置JAVA 环境
2012-05-24 22:35 26750.1--下载 JAVA ... -
FatJar+Exe4j+Inno Setup 生成可执行的exe文件
2012-04-17 10:54 14781、fatjar 是Eclipse的一个免费的插件。它的 ... -
JPanel JTextField add Focus 获取焦点解决方案
2012-03-30 21:29 3042public class TabPagePanel ex ... -
JList List<E> Page 分页
2012-03-30 21:28 1775package view.retrieve.comps. ... -
JButton setAction的BUG
2012-03-23 10:53 1321今天在使用JButton的时候,想用setText()setI ... -
自定义JTabbedPane皮肤
2012-03-22 12:05 4757package ui; import java.awt. ... -
两个工具类
2012-03-17 21:27 908package com.retrieve.utils; ... -
两个工具类
2012-03-17 21:27 0package com.retrieve.utils; ... -
mysql、sqlserver、oracle分页,java分页统一接口实现
2012-03-13 17:56 0定义: pageStart 起始页,pageEnd 终止页, ... -
Invalid command: InetLoad::load
2012-03-06 16:41 1407Invalid command: InetLoad::load ... -
NIO: High Performance File Copying
2012-03-01 17:25 1221In a previous tip, I discussed ... -
自定义JList
2012-02-03 15:39 821自定义JList。
相关推荐
在Java编程语言中,排序是数据处理中一个非常常见的需求,而`Comparator`和`Comparable`接口则是实现排序的关键工具。这两个接口都是用于比较对象,但它们的应用场景和使用方式有所不同。 首先,`Comparable`接口是...
例如,当我们有一个自定义类的集合,并且需要按照多种方式进行排序时,可以先让类实现Comparable接口,表示其默认的排序规则,然后在需要其他排序规则时,创建Comparator实例并传递给Collections.sort()或者TreeSet...
而Comparator接口的排序是局部的,即在每个特定的排序操作中,可以根据需要创建不同的Comparator实例,实现多种排序策略。 在实际开发中,Comparable接口通常用于那些有固定排序规则的类,比如日期、数字等。而...
在Java编程语言中,排序是常见的操作,而`Comparable`和`Comparator`接口则是实现对象排序的两种主要方式。这篇文章将深入探讨这两种实现方式及其在实际编程中的应用。 首先,`Comparable`接口位于`java.lang`包下...
通过传入Comparator实例,我们可以控制这些数据结构内部的排序逻辑。 总结来说,Comparable接口用于那些希望具备默认排序规则的类,通常由类自身实现,确保所有该类的实例都能按照某种规则比较。而Comparator接口则...
在Java编程语言中,`Comparable`接口和`Comparator`接口是两种重要的排序机制,它们用于对集合中的对象进行比较和排序。理解它们的区别对于任何Java开发者来说都是至关重要的。 首先,`Comparable`接口位于`java....
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
在 Java 中,Comparator 和 Comparable 是两个非常重要的接口,它们用于对象的排序操作。这两个接口都是在 java.util 包中定义的,主要用于定制排序规则。 **一、Comparator 接口** Comparator 接口允许我们创建...
在Java编程语言中,Comparable和Comparator接口用于对对象进行比较和排序。这两个接口在很多情况下都能派上用场,但它们的应用场景和实现方式有所不同。 首先,Comparable接口是排序接口,意味着一个类如果实现了...
Comparable 接口和 Comparator 使用示例 在 Java 编程语言中,比较和排序是非常...Comparable 接口和 Comparator 都是 Java 中非常重要的比较和排序机制,它们提供了不同的比较和排序方式,分别适用于不同的应用场景。
我们使用了Collections.sort方法,并传递了一个匿名内部类的Comparator实例来对列表进行排序。在Comparator的compare方法中,我们首先比较了年龄属性,如果年龄相同,则比较姓名属性。最终,程序打印出排序前后的...
在实际使用时,我们可以将Comparator实例传递给Collections.sort()或Arrays.sort()方法,实现自定义排序: ```java LinkedList<Person> al = new LinkedList(); // 添加Person对象... Collections.sort(al, new ...
在需要排序时,你需要同时提供对象列表和相应的Comparator实例,如`Collections.sort(personList, new PersonComparator())`。 Comparable接口的优点在于它简化了代码,因为你不需要每次都传递比较器。但是,它可能...
Java中的`sort`排序算法是Java集合框架的重要组成部分,主要用于对List接口的实现类进行排序。这个算法在Java中主要体现在`java.util.Arrays`和`java.util.Collections`两个类中,提供了对数组和集合的排序功能。...
本实例将探讨如何利用LinkedList以及比较器Comparator实现一个自定义排序的人事信息系统。 首先,我们需要创建一个表示人事信息的类,例如`Employee`,它包含姓名(name)、年龄(age)、身高(height)和职称...
如果需要自定义排序规则,可以提供一个`Comparator`实例给`Collections.sort()`方法。`Comparator`是一个接口,定义了`compare()`方法用于比较两个对象。例如,我们创建一个`ComparatorPerson`类来根据姓名排序: `...
下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这在Java 8引入的流(Stream)API中得到了很好的支持。`Collectors.groupingBy`方法允许我们将...
7. **Comparable与Comparator的区别** `Comparable`是对象本身实现的接口,用于定义默认的排序规则。而`Comparator`是外部对象实现的接口,用于提供定制的排序规则。一个类可以同时实现`Comparable`和`Comparator`...