黑马程序员技术交流社区

标题: 关于集合的排序 [打印本页]

作者: 294645832    时间: 2014-5-27 10:39
标题: 关于集合的排序
本帖最后由 294645832 于 2014-6-5 15:24 编辑

我想问一下如何对集合进行排序  如对ArrayList<Integer>中的元素进行数字大小的排序

作者: lzhuas    时间: 2014-5-27 11:37
Collection.sort或者可以用转数组,然后就用冒泡或选择排序都行
作者: 杨韬略    时间: 2014-5-27 11:54
本帖最后由 杨韬略 于 2014-5-27 11:56 编辑

解答:集合中能对对象进行排序的只有TreeSet,所以你如果想对ArrayList里元素进行排序可以尝试将对象存进TreetSet在用TreeSet集合里的自定义排序方法进行对象排序。
以下是TreeSet集合排序具体步骤!

class  ComparetorInteger implements Comparator{

        public int compare(Object o1, Object o2) {
                Integer min = (Integer) o1;
                Integer max = (Integer) o2;
                int i = max-min;
                return (i == 0)?max-min:min-max;
        }
}

public class TreeSetDemo {

                public static void main(String[] args) {
         
                Test();
        }
        
        
        private static void Test(){
                TreeSet<Integer> treeSet = new TreeSet<Integer>(new ComparetorInteger());
                //从下面的运行结果来看,是根据首字母的排序进行输出的,
                treeSet.add(23);
                treeSet.add(1);
                treeSet.add(56);
                treeSet.add(78);
                treeSet.add(4);
               
                Iterator it = treeSet.iterator();
                while(it.hasNext()){
                        System.out.println(it.next());
                }
        }}

运行效果:
1
4
23
56
78


作者: 294645832    时间: 2014-5-27 18:47
杨韬略 发表于 2014-5-27 11:54
解答:集合中能对对象进行排序的只有TreeSet,所以你如果想对ArrayList里元素进行排序可以尝试将对象存进Tre ...

请问一下  这一步是什么意思   return (i == 0)?max-min:min-max;
作者: 294645832    时间: 2014-5-27 18:48
294645832 发表于 2014-5-27 18:47
请问一下  这一步是什么意思   return (i == 0)?max-min:min-max;

看懂了  谢谢
作者: 杨韬略    时间: 2014-5-27 19:26
294645832 发表于 2014-5-27 18:48
看懂了  谢谢

不用谢:lol
作者: 王者之风西昆仑    时间: 2015-1-6 12:49
杨韬略 发表于 2014-5-27 11:54
解答:集合中能对对象进行排序的只有TreeSet,所以你如果想对ArrayList里元素进行排序可以尝试将对象存进Tre ...

果然很吊
作者: DxxD    时间: 2015-3-27 10:27
杨韬略 发表于 2014-5-27 11:54
解答:集合中能对对象进行排序的只有TreeSet,所以你如果想对ArrayList里元素进行排序可以尝试将对象存进Tre ...

个人觉得,你跟楼主说的不是一个问题,他说的是用ArrayList,你用的TreeSet,你说把ArrayList存进去TreeSet,但是从代码看的出,你是重新定义了TreeSet<Integer>,而不是把ArrayList存进去!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2