我想知道Java是否有一种list,就是当我插入数据的时候就是按照顺序的插入。list.add(item)就是按照由大到小的顺序插入的。有这样的数据结构吗?

解决方案 »

  1.   

    list不会帮你排序的
    而是按照插入顺序来的
      

  2.   

    TreeSet是使用树型结构存储数据的,而且插入数据时保证是顺序插入的,而且这样插入的效率,比你用线性表每插入一次就做一次排序的效率要高的多。
    下面是一个TreeSet的简单示例,具体使用详见API文档import java.util.*;
    public class Test{
        public static void main(String args[]){
            TreeSet<Integer> tree=new TreeSet<Integer>();
            for(int i=20;i>=0;i--){
                tree.add(i);
            }
            System.out.println(tree);
        }
    }
      

  3.   

    如果你一定要用List,你可以先插入好数据,然后调用
    Collections.sort(list);来排序
      

  4.   

    谢谢大家的回复。
    我这个东西不能使用TreeSet,因为TreeSet不能保存重复的值呀。如果我要使用Collections.sort(),能自己写出根据list的特定field进行排序吗?比如List<Person>
    根据Person.age进行排序
      

  5.   

    可以实现Comparator 接口 进行比较http://bluelzx.iteye.com/blog/200987
      

  6.   

    7楼正解,将person类实现Comparator接口或者Comparable
      

  7.   

    那可以用TreeMap,你的数据作为键,而值就是每个不同数据出现的次数。这样,效率依然很高。每次插入时排序,效率实在太低。如果是大数据作业,且对时间要求很高的话,建议使用这种方法。import java.util.*;
    /**
     * 2011-7-14 9:37:51
     * @author Administrator
     */
    public class TTreeMap {
        public TTreeMap(){
            TreeMap<Integer,Integer> tree=new TreeMap<Integer,Integer>();
            int array[]={10,12,131,42,10,20,10,20,30,32,32,30};
            for(int i=0;i<array.length;i++){
                if(tree.containsKey(array[i])){
                    tree.put(array[i], tree.get(array[i])+1);
                }
                else{
                    tree.put(array[i], 1);
                }
            }
            System.out.println(tree);
        }
        public static void main(String args[]){
            new TTreeMap();
        }
    }
      

  8.   

    自己 去 对你的 item 实现 Compareable 接口,之后 重新实现一下 add 方法
      

  9.   

    http://topic.csdn.net/u/20110710/23/c582176b-8254-44e6-a0c5-5975e0b03a10.html
    你的问题和我遇到的差不多,你看看吧
      

  10.   

    package test;import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.List;public class Sample {
    public static void main(String[] args) {
    List list=new ArrayList();
    list.add("2");
    list.add("3");
    list.add("1");
    Collections.sort(list);
    Iterator it=list.iterator();
    while(it.hasNext()){
    System.out.println(it.next());
    }

    }}
      

  11.   

    Collections.sort(list);可以实现java提供的基础类的排序,如String,Integer等。如果是自己写的类需要实现Comparable中的int compareTo(T o)方法。