「java集合对比排序」java中集合排序
本篇文章给大家谈谈java集合对比排序,以及java中集合排序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、请问Java中如何用compareTo方法对集合进行排序啊?
- 2、java集合类排序
- 3、java怎样对集合按照实体类的字段排序
- 4、java中如何对数组和集合进行排序
- 5、Java中如何对集合排序
请问Java中如何用compareTo方法对集合进行排序啊?
import java.util.*;
class Student implements Comparable
{
public String sName;
public Student()
{
}
public Student(String sName)
{
this.sName=sName;
}
public int compareTo(Object o)//重写compareTo方法
{
Student tempStudent=(Student)o;
String temp=tempStudent.sName;
return this.sName.compareTo(temp); //按字符串sName的顺序排列Student
}
public String toString()
{
return this.sName;
}
}
class fggg {
public static void main(String args[])
{
TreeSet ts=new TreeSet();//插入Student对象时,会自动调用compareTo方法
ts.add(new Student("DD"));
ts.add(new Student("CC"));
ts.add(new Student("BB"));
System.out.println(ts);
}
}
java集合类排序
//写完了代码不让我发出去!!~!!!
/*
需求:
主序: 根据salary的升序排序;
次序: 比较emp的name属性。
//工资相同则比较姓名相同,如果工资姓名相同则被视为同一人而不存入;
--------------------------
开场!
在 ArrayList 容器当中 ArrayList判断对象是否相同使用的是 equals 方法;@!
--------------------------------------------------------------
java中的ArrayList需要通过collections类的sort方法来进行排序
如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法
调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数
*/
//导入包:
import java.util.*;
//主方法区:
class Demo1
{
public static void main(String []args)
{//创建ArrayList集合: //传入自己定义的比较方式!
ArrayListEmp al=new ArrayListEmp();
//添加元素://简单写了;
al.add( new Emp("aa",300) );
al.add( new Emp("bb",200) );
al.add( new Emp("cc",100) );
al.add( new Emp("dd",400) );
//sop(al);//开始排序:
Collections.sort(al, new EmpCom());
//迭代取出集合元素:
IteratorEmp it=al.iterator();
while( it.hasNext() )
{
Emp ee=(Emp)it.next();
sop( "name:"+ee.getName()+":"+"salary:"+ee.getSalary() );
}
}
//建立引用:
public static void sop(Object obj)
{
System.out.println(obj);
}
}
//建立员工类:
class Emp implements ComparableEmp
{ //实现接口方法:
public int compareTo(Emp obj)
{System.out.println("aa");br //开始比较://当主要条件满足在判断次要条件排序:br int num =new Float(this.getSalary()).compareTo(new Float(obj.getSalarybr/()));br if( num == 0 )//-- 当主要条件满足则判断次要条件;br {br return new Integer(this.getName()).compareTo( new Integer(obj.getName()) br/);br }
return num;
}
private String name;
private float salary;
Emp(String name,float salary)
{
this.name=name;
this.salary=salary;
}
//对外提供获取和设置方法:
public void setName(String name)
{
this.name=name;
}
public void setSalary(float salary)
{
this.salary=salary;
}
//对外提供获取:
public float getSalary()
{
return this.salary;//严谨一点写this
}
public String getName()
{
return this.name;
}
//复写toString():
public String toString()
{
return this.name+":"+this.salary;
}
//复写父类 equals 方法:
public boolean equals(Object obj)
{
//判断如果进入类型不匹配则抛出异常;
if( !(obj instanceof Emp) )
throw new ClassCastException("类型不匹配");
//强转:
Emp p=(Emp)obj;
System.out.println(this.name+"..."+p.name);//检验 equlas 比较是什么回事;
return (this.name.equals(p.name) this.salary==p.salary);//如果它们的名字
相同且薪水相同则返回 true;
}
}
//比较器:
class EmpCom implements ComparatorEmp
{ //实现排序方式:
public int compare(Emp o1, Emp o2)
{
int num =new Float(o2.getSalary()).compareTo(new Float(o1.getSalary
()));
if( num == 0 )//-- 当主要条件满足则判断次要条件;
{
return new Integer(o2.getName()).compareTo( new Integer(o1.getName()) );
}
return num;
}
}
//总结:把每个集合的特点掌握清楚,集合框架多看几次就熟悉了。
----------------------------------------------------------------------------
/*
我了可否令咖啡首付款事件合法课时计划疯狂事件合法开始疯狂事件合法死
ufhwiefhwiefhw 搜集是龙卷风时间飞逝龙卷风苏佛ie 释放锁飞发生法 非僧非俗 随碟
附送飞 水电费是防守对方 鼎折覆餗飞上的的是发送
*/
java怎样对集合按照实体类的字段排序
import java.util.Comparator;
import java.util.TreeSet;
/*
* 需求:请按照姓名的长度排序
*
* TreeSet集合保证元素排序和唯一性的原理
* 唯一性:是根据比较的返回是否是0来决定。
* 排序:
* A:自然排序(元素具备比较性)
* 让元素所属的类实现自然排序接口 Comparable
* B:比较器排序(集合具备比较性)
* 让集合的构造方法接收一个比较器接口的子类对象 Comparator
*/
public class TreeSetDemo {
public static void main(String[] args) {
// 创建集合对象
// TreeSetStudent ts = new TreeSetStudent(); //自然排序
// public TreeSet(Comparator comparator) //比较器排序
// TreeSetStudent ts = new TreeSetStudent(new MyComparator());
// 如果一个方法的参数是接口,那么真正要的是接口的实现类的对象
// 而匿名内部类就可以实现这个东西
TreeSetStudent ts = new TreeSetStudent(new ComparatorStudent() {
@Override
public int compare(Student s1, Student s2) {
// 姓名长度
int num = s1.getName().length() - s2.getName().length();
// 姓名内容
int num2 = num == 0 ? s1.getName().compareTo(s2.getName())
: num;
// 年龄
int num3 = num2 == 0 ? s1.getAge() - s2.getAge() : num2;
return num3;
}
});
// 创建元素
Student s1 = new Student("linqingxia", 27);
Student s2 = new Student("zhangguorong", 29);
Student s3 = new Student("wanglihong", 23);
Student s4 = new Student("linqingxia", 27);
Student s5 = new Student("liushishi", 22);
Student s6 = new Student("wuqilong", 40);
Student s7 = new Student("fengqingy", 22);
Student s8 = new Student("linqingxia", 29);
// 添加元素
ts.add(s1);
ts.add(s2);
ts.add(s3);
ts.add(s4);
ts.add(s5);
ts.add(s6);
ts.add(s7);
ts.add(s8);
// 遍历
for (Student s : ts) {
System.out.println(s.getName() + "---" + s.getAge());
}
}
}
java中如何对数组和集合进行排序
java中对集合排序,可以使用Collections.sort来进行排序,可以对中文、字母、数字进行排序,当比较的是对象时候,让该类实现comparable接口,示例如下:
Collections.sort(dataMap, new ComparatorMapString, Object() { //排序接口实现方法 @Override public int compare(MapString, Object lhs, MapString, Object rhs) { switch (whichsort) { case System_OpenPosition_Sort_Currency: String d2 = ((String) rhs.get(Instrument)); String d1 = (String) lhs.get(Instrument); if (d2 != null d1 != null) { int flag = d1.compareTo(d2); if (flag == 0) { Double d3 = ((Double) rhs.get(OpenPrice)); Double d4 = (Double) lhs.get(OpenPrice); if (d3 != null d4 != null) { int flag2 = d4.compareTo(d3); if (flag2 == 0) { String d5 = ((String) rhs.get(BuySell)); String d6 = (String) lhs.get(BuySell);//文字排序 if (d5 != null d6 != null) { return d6.compareTo(d5);//返回一个int类型,用来判断是否大于、小于还是等于 } } return d4.compareTo(d3); } } else { return flag; } // return d1.compareTo(d2); }
Java中如何对集合排序
Java内建的排序(冒泡):Java集合有两个实现的工具类,Collections和Arrays。Collections针对集合类型。Arrays针对数组。只需要一个为你排序需要的定制的Comparator或Comparable的实现,将其作为参数传给Collections或Arrays的sort方法就行。
可以自己用程序去实现这个排序。用for从原List里面一个一个拿出来比较然后一个新建的List里面去。
楼主看一下参考资料。
java集合对比排序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java中集合排序、java集合对比排序的信息别忘了在本站进行查找喔。