Java 有序列表 我想知道Java是否有一种list,就是当我插入数据的时候就是按照顺序的插入。list.add(item)就是按照由大到小的顺序插入的。有这样的数据结构吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 list不会帮你排序的而是按照插入顺序来的 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); }} 如果你一定要用List,你可以先插入好数据,然后调用Collections.sort(list);来排序 谢谢大家的回复。我这个东西不能使用TreeSet,因为TreeSet不能保存重复的值呀。如果我要使用Collections.sort(),能自己写出根据list的特定field进行排序吗?比如List<Person>根据Person.age进行排序 可以实现Comparator 接口 进行比较http://bluelzx.iteye.com/blog/200987 7楼正解,将person类实现Comparator接口或者Comparable 那可以用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(); }} 自己 去 对你的 item 实现 Compareable 接口,之后 重新实现一下 add 方法 http://topic.csdn.net/u/20110710/23/c582176b-8254-44e6-a0c5-5975e0b03a10.html你的问题和我遇到的差不多,你看看吧 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()); } }} Collections.sort(list);可以实现java提供的基础类的排序,如String,Integer等。如果是自己写的类需要实现Comparable中的int compareTo(T o)方法。 异常 div的折行问题(如何能让div中的内容不折行呢)急!!! 请教如何使用包 java中add.list()的问题 数据保存出错,求救! 十万火急!!!一个三维点到二维点的转换 请教关于字符串输入问题!! 关于字符串的比较问题.. 谁能告诉我java里的Document类具体有什么用途啊? 子类在实例化时,会自动调用父类的构造函数,那请问:会实例化一个父类的对象吗? 求大虾帮忙决定一下MyEclipse的小问题 数组内存空间分配与增长问题 请大侠赐教 谢谢了
而是按照插入顺序来的
下面是一个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);
}
}
Collections.sort(list);来排序
我这个东西不能使用TreeSet,因为TreeSet不能保存重复的值呀。如果我要使用Collections.sort(),能自己写出根据list的特定field进行排序吗?比如List<Person>
根据Person.age进行排序
/**
* 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();
}
}
你的问题和我遇到的差不多,你看看吧
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());
}
}}