正文
java代码给对象排序 java对象排序comparable详细实例
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
用java程序对集合里的对象排序
要对对象排序java代码给对象排序,首先要在设计对象所属类时实现Comparable接口。然后再CompareTo方法中设定排序规则。如要按汉字的拼音排序,可以调用CnToSpell.getFullSpell("字符串")方法,将汉字转换成拼音字符串,然后调用字符串的比较函数即可。CnToSpell类可以上网查一下在那个包中,记不得java代码给对象排序了。
Java中怎么给一个对象排序
Comparable 是一个自身以前支持自比拟的(如String ,Integer) 的接口 Comparator 可以说是一个 自用的比拟器 当对象自身 不支持自排序和自比拟函数的时辰 咱们可以议决完成Compartor 来比拟两对象的大小 Comparable 是一个比拟通用的接口 用户可以议决他完成 排序功用 而Comparator 可以看作一种算法 一种设计方式 (可以看作是一个战略方式 就是不改动对象自身,而用一个战略对象改动对象行为) Comparable 相比拟较固定 与详细类绑定 , Comparator 比拟灵敏 可以与任何须要完成功用的类 绑定 Comparable 可以说是 静态绑定 Comparator 可以说是静态绑定 Comparable 此接口强行对完成它的每个类的对象执行全体排序。此排序被称为该类的自然排序,类的 compareTo 方法被称为它的自然比拟方法。 完成此接口的对象列表(和数组)可以议决 Collections.sort(和 Arrays.sort)执行自动排序。完成此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比拟器。 关于类 C 的每一个 e1 和 e2 来说,当且仅当 (e1.compareTo((Object)e2) == 0) 与 e1.equals((Object)e2) 具有类似的布尔值时,类 C 的自然排序才叫做与 equals 一致。留意,null 不是任何类的实例,即便 e.equals(null) 前往 false,e.compareTo(null) 也会抛出 NullPointerException。 剧烈推荐(虽然不是必需的)使自然排序与 equals 一致。这是由于在运用其自然排序与 equals 不一致的元素(或键)时,没有显式比拟器的有序集合(和有序映射表)行为表现“怪异”。尤其是,这样的有序集合(或有序映射表)违犯了依据 equals 方法定义的集合(或映射表)的惯例协议。 而Comparator 比拟函数强行对某些对象 collection 执行全体排序。可以将 Comparator 传递给 sort 方法(如 Collections.sort),从而准许在排序顺序上完成精确控制。还可以运用 Comparator 来控制某些数据结构(如 TreeSet 或 TreeMap)的顺序。
Java中对象按照属性排序
项目中经常需要用到比如地区列表按照中文的拼音首字母排序 但是有时候获取到的地区列表是对象的形式 有地区id 地区名称两个属性 这里主要涉及到两个技术点
对象按属性排序 中文按拼音首字母排序 下面给出自己整理好的demo:
import java text Collator;
import java util ArrayList;
import java util Collections;
import java util Comparator;
import mons beanutils BeanComparator;
import llections ComparatorUtils;
import parators ComparableComparator;
import parators ComparatorChain;
public class CompareTipA {
private int id;
private String name;
private String age;
@SuppressWarnings( unchecked )
public static void main(String []args) {
ArrayListObject list = new ArrayListObject()
list add(new CompareTipA( 五 ))
list add(new CompareTipA( 六 ))
list add(new CompareTipA( 二 ))
list add(new CompareTipA( 四 ))
list add(new CompareTipA( 四 ))
list add(new CompareTipA( 一 ))
Comparator mycmp = ComparableComparator getInstance()
mycmp = ComparatorUtils nullLowComparator(mycmp)
//允许null
mycmp = ComparatorUtils reversedComparator(mycmp) //逆序
ArrayListObject sortFields = new ArrayListObject()
ComparatorObject parator=Collator getInstance(java util Locale CHINA)
sortFields add(new BeanComparator( name parator)) //name正序 (主)
sortFields add(new BeanComparator( id mycmp))
//id逆序 (副)
ComparatorChain multiSort = new ComparatorChain(sortFields)
Collections sort(list multiSort)
for (int i = ;ilist size() i++) {
System out println(list get(i))
//输出 /*
[id= name=二 age= ]
[id= name=六 age= ]
[id= name=四 age= ]
[id= name=四 age= ]
[id= name=五 age= ]
[id= name=一 age= ]*/
}
}
public CompareTipA(int id String age String name) {
this id = id;
this name = name;
this age = age;
}
public int getId() {
return this id;
}
public void setId(int id) {
this id = id;
}
public String getName() {
return this name;
}
public void setName(String name) {
this name = name;
}
//
public int pareTo(Object o) { //
return pare(this o) // }
public String toString() {
return [id= + this id + name= + this name + age= + this age + ] ;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this age = age;
} }
注意 需要导入的三个包 mons beanutils jar
mons collections jar
mons logging jar
lishixinzhi/Article/program/Java/hx/201311/25790
JAVA 数组中的元素是对象,如何给对象排序
Book[] books = { new Book("j2me",12), new Book("j2se",5), new Book("j2ee",22) };
Arrays.sort (books, new ComparatorBook ()
{
@Override
public int compare ( Book o1, Book o2 )
{
if (o1.getPrice() o2.getPrice() )
{
return 1;
}
else if (o1.getPrice() o2.getPrice() )
{
return -1;
}
else
{
return 0;
}
}
});
Java中如何把一组对象按照其某一个属性值进行排序?详见补充:
很高兴回答你的为问题:
首先,你写个专用的比较器,如下:
public class ComparatorImpl implements ComparatorStudent {
public int compare(Student s1,Student s2) {
int age1 = s1.getAge();
int age2 = s2.getAge();
if(age1age2){
return 1;
}else if(age1age2){
return -1;
}else{
return 0;
}
}
}
你只需把其中的Student换成Operation,把属性age换成startTime,即可
2)最后你在排序的时候按照下边的代码:
Comparator comp = new ComparatorImpl();
Collections.sort(ops, comp);
这样即可实现按照你所说的int属性排序;
这是实现Comparator接口进行排序,还有一种是需要你的Operation实现Comparable接口重写compareTo方法进行排序,详细你看下API,如果仍有疑问请Hi我,谢谢!
java 如何对自定义的对象进行排序
//把排序规则交给sort方法。该方法就回按照java代码给对象排序你自定义java代码给对象排序的规则进行排序 java.util.Arrays.sort(users,new MyComparator()); for (int i = 0; iusers.length; i++){ System.out.println (users[i]);}}}class User{ String name;int age ; public User(String name,int age){ this.name = name; this.age = age;} public String toString(){ return name+":::"+age;}}class MyComparator implements Comparator{ public int compare(Object obj1, Object obj2 ){ User u1 = (User)obj1; User u2 = (User)obj2; if(u1.ageu2.age){return 1;}else if(u1.ageu2.age){return -1;}else{//利用String自身java代码给对象排序的排序方法。 //如果年龄相同就按名字进行排序
关于java代码给对象排序和java对象排序comparable详细实例的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。