1、常见数据结构的Java实现,常见数据结构,链表散列集向量栈树集,链表,如果需要处理一些类型相同的数据,人们习惯上使用数组这种数据结构,但数组在使用之前必须定义大小,而且不能动态定义大小.有时可能给数组分配了太多的单元而浪费了宝贵的内存资源,糟糕的一方面是,程序运行时需要处理的数据可能多于数组的单元.当需要动态地减少或增加数据项时,可以使用链表这种数据结构。链表是由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点对象的引用(单链表 ),或含有一个数据并含有上一个节点对象的引用和下一个节点对象的引用(双链表) 。,创建链表,使用java.util 包中的LinkedList
2、类创建一个链表.例如,LinkedList mylist=new LinkedList();创建了一个空链表.然后mylist链表可以使用add()方法向这个链表依次增加节点.例如mylist.add(“It”);mylist.add(“is”);mylist.add(“a”);mylist.add(“door”);mylist可以使用方法public Object get(index i)获取第i个节点中存储的数据.存放在节点中的数据都被看作是一个Object 对象.,import java.util.*;public class LinkListOne public static void
3、 main(String args) LinkedList mylist=new LinkedList(); mylist.add(It); /链表中的第一个节点. mylist.add(is); /链表中的第二个节点. mylist.add(a); /链表中的第三个节点. mylist.add(door); /链表中的第四个节点. int number=mylist.size(); /获取链表的长度. for(int i=0;i 0时,称s1 大于s2,pare(s2)0 时,称a大于pare(s2)0 时,称a小于b.然后用带Comparator参数的构造方法TreeSet(Compara
4、tor c);创建一个树集,通过参数c规定树集的节点按怎样的顺序排列,如下所示TreeSet mytree=new TreeSet(new Comparator()public int compare(Object a,Object b)Student stu1=(Student)a;Student stu2=(Student)b;return pareTo(stu2););注 Comparator 是java.util 包中的一个接口,compare 是接口中的方法,因此必须给出方法体.,注 树集中不容许出现大小相等的两个节点,例如,在上述例子中如果再添加语句st5=new Student(
5、76,keng wenyi); mytree.add(st5);是无效的.如果允许成绩相同,可把上述例子中Student 类中的compareTo 方法更改为public int compareTo(Object b) Student st=(Student)b;if(this.english-st.English)=0)return 1;elsereturn (this.english-st.english);注 理论上已经知道,把一个元素插入树集的合适位置要比插入数组或链表中的合适位置效率高.,TreeSet类的一些常用方法public boolean add(Object o) 向树集添加加节点,添加成功返回true,否则返回false.public void clear() 删除所有的节点.public void contains(Object o) 如果包含节点o返回true .public Object first() 返回根节点,即第一个节点 最小的节点 .public Object last() 返回最后一个节点 最大的节点 .public isEmpty() 判断是否是空树集,如果树集不含节点返回true .public boolean remove(Object o) 删除节点o.public int size() 返回节点数目.,