listsort怎么排序,list sort怎么排序

http://www.itjxue.com  2023-01-04 16:22  来源:未知  点击次数: 

java 怎么将List里面数据排序

import?java.util.ArrayList;

import?java.util.Collections;

import?java.util.Comparator;

import?java.util.List;

public?class?ArrayListOrder?{

public?static?void?main(String[]?args)?{

ListListInteger?list?=?new?ArrayListListInteger();

ListInteger?arrayList1?=?new?ArrayListInteger();

arrayList1.add(2);

arrayList1.add(5);

arrayList1.add(6);

list.add(arrayList1);

ListInteger?arrayList2?=?new?ArrayListInteger();

arrayList2.add(2);

arrayList2.add(4);

arrayList2.add(6);

list.add(arrayList2);

ListInteger?arrayList3?=?new?ArrayListInteger();

arrayList3.add(2);

arrayList3.add(6);

arrayList3.add(6);

list.add(arrayList3);

ListInteger?arrayList4?=?new?ArrayListInteger();

arrayList4.add(2);

arrayList4.add(1);

arrayList4.add(6);

list.add(arrayList4);

for?(ListInteger?tmpList?:?list)?{

System.out.print(tmpList.get(1)+"???");

}

System.out.println("");

//排序

Collections.sort(list,new?ComparatorListInteger(){

public?int?compare(ListInteger?list1,?ListInteger?list2)?{

//比较每个ArrayList的第二个元素

if(list1.get(1)==list2.get(1)){

return?0;

}else?if(list1.get(1)list2.get(1)){

return?1;

}else{

return?-1;

}

}

});

for?(ListInteger?tmpList?:?list)?{

System.out.print(tmpList.get(1)+"???");

}

}

}

C#里的list泛型的sort排序使用的是数据结构里的哪种排序?

多半是QSORT

效率不会很低

当然。。追求最高效率的话你要自己写代码的

因为本身OO就牺牲了运行效率来换取开发效率

集合类的sort方法采用的什么排序算法

诸如ListT等泛型集合类,直接提供了sort()方法用于将集合中的元素进行排序。

但是,其前提是集合中存放的是可直接排序的基本类型,如Listint, Listdouble,如果

我们定义了一个自定义类型 Class MyClass,并创建一个自定义类型的集合如ListMyClass,

那么无参的sort()方法就不可用了,因为不知道如何排序了。这时就需要借助:

IComparer 和 IComparable

首先,我们来看一下c#泛型List提供的Sort方法:

泛型List类的Sort方法有四种形式,分别是

1,不带有任何参数的Sort方法----Sort();

2,带有比较器参数的Sort方法 ----Sort(IComparerT)

3,带有比较代理方法参数的Sort方法----Sort(Comparison(Of (T)))

4,带有比较器参数,可以指定排序范围的Sort方法----Sort(Int32, Int32 IComparer(T))

【解析:】第一种方法

使用这种方法不是对List中的任何元素对象都可以进行排序,List中的元素对象必须继承IComparable接口,并且要实现IComparable接口中的CompareTo()方法,在CompareTo()方法中要自己实现对象的比较规则。

例如,Int32和Double都是实现了IComparable接口并重载了CompareTo方法的结构。(注:int和double都是Int32和Double的别名(alias))

【解析:】第二种方法

2,带有比较器参数的Sort方法 ----Sort(IComparerT),

1)创建一个额外的比较器类:其实就相当于将排序功能中的比较操作,留个使用者来完成。这个比较操作必须在实现了IComparer接口的自定义比较类中完成;如:

class myComparer:IComparerMyClass

2)制定比较规则实现比较方法:因为接口中有一个用于比较的重载函数Compare,所在在比较器类中我们必须实现它,完成自己希望的比较。所谓自己希望的比较就是说自己实现自定义对象的比较规则,例如你知道自定义类MyClass中哪个属性适合用来排序,那么就选择这个属性作为整个自定义类对象的排序属性,如该类中有年龄,学号,入学日期等属性,你可以选择年龄属性作为排序属性。如:

public class myComparer:IComparerMyClass

{

//实现按年龄升序排列

public int Compare(MyClass x, MyClass y)

{

return (x.age.CompareTo(y.age)); //age代表年龄属性是整型,即其已支持CompareTo方法

}

}

3)使用比较器的排序方法调用:然后,在自定义类型的集合如ListMyClass myList,上就可以进行sort排序了,如

myList.Sort(new myComparer());

【解析:】第三种方法

3,带有比较代理方法参数的Sort方法----Sort(Comparison(Of (T)))

Comparison(Of

(T)是一种泛型委托。所以,需要编写一个对象排序比较的方法,对List中的元素对象没有特殊的要求,但在比较方法中需要实现

对象比较规则,这个方法实现后,就可以把这方名字作为参数委托给List的Sort方法,Sort方法在排序时会执行这个方法对List中的对象进行比较

需要编写一个对象排序比较的方法,对List中的元素对象没有特殊的要求,但在比较方法中需要实现对象比较规则,这个方法实现后,就可以把这方名字作为参

数委托给List的Sort方法,Sort方法在排序时会执行这个方法对List中的对象进行比较

【解析:】第四种方法

4,带有比较器参数,可以指定排序范围的Sort方法----Sort(Int32, Int32 IComparer(T))

对于第四排序方法,实际是第二种比较器排序的一个扩展,在指定排序比较器的同时,指定排序范围,即List中准备排序的开始元素索引和结束元素索引

STL的list容器如何对结构体进行排序

链表list有自定义的sort排序函数,默认由大到小排序,但是只有能够比较大小的数值类型的内容才可以,如int,float,double等,对于结构体需要自己定义排序函数。

例如:

定义结构体:

typedef

struct

NewTreeElem

{

long

nNodeId;

//节点id

int

nLevel;

//层次

double

dSoIn;

//社会影响

};

定义全局比较函数,注意必须是全局函数:

////比较

boolCompInfo(NewTreeElem

first,

NewTreeElem

second)

{

if(first.dSoIn

=

second.dSoIn)

//由大到小排序

//如果想要由小到大,改为大于即可

{

return

false;

}

else

{

return

true;

}

}

定义链表:

listNewTreeElem

listSocialInf

链表排序:

//对邻居按照社会影响由大到小排序

listSocialInf.sort(CompInfo);

list排序的几种方式

List容器貌似是不支持直接写数字的,你是不是通过String的方式放进去的呢?

public static void main(String[] args) {

test();

}

public static void test() {

ListString list = new ArrayListString();

list.add("6");

list.add("5");

list.add("");

list.add("3");

list.add("1");

list.add("2");

list.add("4");

Collections.sort(list);

System.out.println(list);

}

另外,如果是数字,也是一样的处理方式,关于数组排序了解下Collections的API就好,见参考资料

(责任编辑:IT教学网)

更多

推荐杀毒防毒文章