问题描述
我有个题目,是这样的。用Arrilist进行排序。importjava.util.*;publicclassListHome{publicstaticvoidmain(Stringargs[]){ArrayList<Integer>arrayList=newArrayList<Integer>();arrayList.add(1);arrayList.add(2);arrayList.add(3);arrayList.add(4);Collections.sort(List<Integer>arrayList);}}
目的要求使用:Collections里面的sort方法进行排序,感觉很复杂又要用到泛型和接口实在不会了。static<TextendsComparable<?superT>>voidsort(List<T>list)根据元素的自然顺序对指定列表按升序进行排序。或者static<T>voidsort(List<T>list,Comparator<?superT>c)根据指定比较器产生的顺序对指定列表进行排序。实在不会了,请高手将字符升序排。要代码。我写到上面就不会了。
解决方案
解决方案二:
您自己也可以尝试勇一下啊。
解决方案三:
我试了一下午,结果还是悲剧了。
解决方案四:
importjava.util.ArrayList;importjava.util.Collections;publicclassListHome{publicstaticvoidmain(String[]args){ArrayList<Integer>arrayList=newArrayList<Integer>();arrayList.add(5);arrayList.add(4);arrayList.add(3);arrayList.add(2);arrayList.add(1);Collections.sort(arrayList);for(inti:arrayList){System.out.print(i+"t");}}}你帖到Eclipse里面看一下吧。
解决方案五:
您可以把自己的代码拿出来让大家看一下,大家才好帮您改。
解决方案六:
这样是不是已经排好了?
解决方案七:
我是要做按照字符串排序不是用Integer排序。
解决方案八:
StringInteger等这些常见的不是都实现了Comparable了吗?类Stringjava.lang.Objectjava.lang.String所有已实现的接口:Serializable,CharSequence,Comparable<String>
解决方案九:
importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;publicclassCompareTest{publicstaticvoidmain(Stringargs[]){List<String>arrayList=newArrayList<String>();arrayList.add("7adfakfd");arrayList.add("1dffakfd");arrayList.add("3adeakfd");arrayList.add("4adfdkfd");arrayList.add("adfekfd");arrayList.add("qdfakfd");arrayList.add("adfakfd");System.out.println(arrayList);Collections.sort(arrayList);System.out.println(arrayList);Collections.reverse(arrayList);System.out.println(arrayList);List<Integer>arrayList2=newArrayList<Integer>();arrayList2.add(1243634);arrayList2.add(254);arrayList2.add(745);arrayList2.add(4);arrayList2.add(6795);arrayList2.add(32454545);arrayList2.add(654353);System.out.println(arrayList2);Collections.sort(arrayList2);System.out.println(arrayList2);Collections.reverse(arrayList2);System.out.println(arrayList2);}}
解决方案十:
所以,很郁闷啊。请各位把题目看清楚。要用泛型接口的Collections里面的sort方法进行排序对字符升序排列,可能用到的API方法我已经贴出来了,另外我还发了一个加分帖子。所以,帮我搞出来了的有200分奖励。
解决方案十一:
arrayList.add(1);arrayList.add("aa");arrayList.add("bb");arrayList.add("cc");
举个例子对这个降序排列
解决方案十二:
在线求高手
解决方案十三:
用比较器呗
解决方案十四:
等待结果中!
解决方案十五:
importjava.util.ArrayList;importjava.util.Collections;importjava.util.Scanner;publicclassListHome{/***@paramargs*/publicstaticvoidmain(String[]args){//TODO自动生成方法存根ArrayList<String>arrayList=newArrayList<String>();arrayList.add("vss");arrayList.add("sad");arrayList.add("asd");arrayList.add("das");arrayList.add("gdss");Collections.sort(arrayList);for(Stringi:arrayList){System.out.print(i+"t");}}}好像这样就可以了。自己试一下吧
解决方案:
Collections.reverse()这个方法也不能用?
解决方案:
Collections类部分源代码:publicstatic<TextendsComparable<?superT>>voidsort(List<T>list){Object[]a=list.toArray();Arrays.sort(a);ListIterator<T>i=list.listIterator();for(intj=0;j<a.length;j++){i.next();i.set((T)a[j]);}}
解决方案:
Collections.sort();Collections.reverse();这两个方法结合起来用可以实现降序排序。
解决方案:
Collections.sort(list,newComparator(){publicintcompare(Objecto1,Objecto2){ return(o1.hashCode()-o2.hashCode());}});
解决方案:
每天回复,10分可用.
解决方案:
可以自定义排序规则
解决方案:
试试吧importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.HashMap;importjava.util.Map;publicclassTestSort{publicstaticvoidmain(Stringargs[]){ArrayList<Integer>arrayList=newArrayList<Integer>();arrayList.add(1);arrayList.add(12);arrayList.add(3);arrayList.add(2);Collections.sort(arrayList,newMyComparator());for(inti=0;i<arrayList.size();i++){System.out.println(arrayList.get(i));}}}classMyComparatorimplementsComparator{publicMyComparator(){super();}publicintcompare(Objecto1,Objecto2){return(Integer)o1-(Integer)o2;}}
解决方案:
不知道,是不是这个意思。这种排序方法,应该是对一些复杂对象进行排序的。对于Integer这类的,可能看不太出来。感觉不出威力。主要就是实现compare这个方法。使两个对象具有“可比性”,也就是告诉电脑,这种复杂对象应该怎么比。
解决方案:
o1-o2就是升序。换个位置,就是降序。挺有意思吧。publicintcompare(Objecto1,Objecto2){return(Integer)o2-(Integer)o1;}
解决方案:
小小菜鸟路过。。
解决方案:
还没成功接过分,对这道题倒时有点信心,楼主成全我吧,如果有凝问可以Q我402279001ArrayList<String>strs=newArrayList<String>();//省略添加元素的步聚,也就是strs.add();Comparator<String>strsComparator=newComparator<String>(){publicintcompare(Stringstr1,Stringstr2){//这里可以根据你想要的方式排序,因为String已经实现了Comparable原因//returnstr1.compareTo(str2);//升序//returnstr2.compareTo(str1)//降序//这里再比如String是个自定义的类没被Comparable接口//示例1:根据String的长度升序排序降序只需要将str1和str2前后调一下就行了//returnstr1.length()-str2.length();//示例2:根据String里面的字符升序排序intend=str1.length()>str2.length()?str2.length():str1.length();for(inti=0;i<end;i++){if(str1.charAt(i)-str2.charAt(i)!=0){returnstr1.charAt(i)-str2.charAt(i);}}returnstr1.length()-str2.length();}};Collections.sort(strs,strsComparator);
解决方案:
100分,要勇一下:importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;publicclassListHome{publicstaticvoidmain(Stringargs[]){ArrayList<Integer>arrayList=newArrayList<Integer>();arrayList.add(1);arrayList.add(2);arrayList.add(3);arrayList.add(4);Collections.sort(arrayList,newComparator<Integer>(){publicintcompare(Integero1,Integero2){returno1.compareTo(o2);}});System.out.println("正序排列后:n"+arrayList);Collections.sort(arrayList,newComparator<Integer>(){publicintcompare(Integero1,Integero2){returno2.compareTo(o1);}});System.out.println("逆序序排列后:n"+arrayList);}}
解决方案:
呵呵我试了一天还是悲剧啊
解决方案:
你可以继承Comparator接口,然后自己重写compare方法,方法交给你了,规则自己是实现吧!!我前几天刚学习的,肯定可以!!!
解决方案:
该回复于2010-11-19 09:13:02被版主删除
解决方案:
我应聘。。。闲逛中
解决方案:
重写SORT
解决方案:
完全自己写吧
解决方案:
importjava.util.*;publicclassListHome{publicstaticvoidmain(Stringargs[]){ArrayList<Integer>arrayList=newArrayList<Integer>();arrayList.add(1);arrayList.add(2);arrayList.add(3);arrayList.add(4);Collections.sort(arrayList);}}
不就是这样了吗??貌似楼主不太勇敢啊··
解决方案:
importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;publicclassTest{publicstaticvoidmain(String[]args){ArrayList<String>as=newArrayList<String>();as.add("B");as.add("A");as.add("C");as.add("E");//用这个方法,排完序后就是升序,如果相要降序,那么还要接着调用reverse方法Collections.sort(as);//升序System.out.println(as);//这个方法可以让集合中的元素按相反的顺序重排Collections.reverse(as);System.out.println(as);//这个方法,可以控制是按升序排还是用降序排Collections.sort(as,newComparator<String>(){publicintcompare(Stringa,Stringb){returnb.compareTo(a);//降序//returna.compareTo(b);//升序}});System.out.println(as);}}冲着你的高分,我来给个全面的解答,把上面的代码贴到eclips里执行试试
解决方案:
每天坚持顶帖
解决方案:
该回复于2010-11-19 09:47:04被版主删除
解决方案:
该回复于2010-11-30 18:22:59被版主删除
解决方案:
该回复于2010-11-19 09:47:04被版主删除
解决方案:
该回复于2010-11-19 10:21:31被版主删除
解决方案:
该回复于2010-11-19 09:47:29被版主删除
解决方案:
引用26楼blazingfire的回复:
100分,要勇一下:Javacodeimportjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;publicclassListHome{ publicstaticvoidmain(Stringargs[])……
这个不错啊
解决方案:
该回复于2010-12-03 13:42:17被版主删除
解决方案:
下面就可以实现自己写比较器就行了,代码如下引用21楼john_sheep的回复:
Javacodeimportjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.HashMap;importjava.util.Map;publicclass……
解决方案:
看我写过的一个排序,跟你那个几乎一样的嘛travels=newArrayList<Map>();Mapmap=newHashMap();map.put("traffic",travel.getTraffic());map.put("content",travel.getContent());map.put("hotel",travel.getHotel());map.put("type",travel.getType());map.put("opid",travel.getOpid());map.put("upymd",travel.getUpymd());travels.add(map);//对加入了新元素的集合按行程日期重新排序Collections.sort(travels,newComparator(){/*(non-Javadoc)*@seejava.util.Comparator#compare(java.lang.Object,java.lang.Object)*/publicintcompare(Objecto1,Objecto2){Objectobj=((Map)o1).get("tdate");Integertdate1=null;if(objinstanceofBigDecimal){BigDecimalbd1=(BigDecimal)obj;tdate1=Integer.valueOf(bd1.toString());}elseif(objinstanceofInteger){tdate1=(Integer)obj;}tdate1=tdate1!=null?tdate1:0;obj=((Map)o2).get("tdate");Integertdate2=null;if(objinstanceofBigDecimal){BigDecimalbd2=(BigDecimal)obj;tdate2=Integer.valueOf(bd2.toString());}elseif(objinstanceofInteger){tdate2=(Integer)obj;}tdate2=tdate2!=null?tdate2:0;returntdate1-tdate2;}});
解决方案:
在内部类的compare方法里重写排序规则
解决方案:
importjava.util.*;publicclassListHome{publicstaticvoidmain(Stringargs[]){ArrayList<Integer>arrayList=newArrayList<Integer>();arrayList.add(1);arrayList.add(2);arrayList.add(3);arrayList.add(4);Collections.sort(List<Integer>arrayList,newComparator(){publicintcompare(Objecto1,Objecto2){return(Integer)o2-(Integer)o1}});}}
解决方案:
该回复于2010-11-19 09:47:44被版主删除
解决方案:
很简单不知道lz搞什么
解决方案:
字符串排序?要用list吗?
解决方案:
只要勇夫吗?