java数据结构
原创
©著作权归作者所有:来自51CTO博客作者华仔来了的原创作品,请联系作者获取转载授权,否则将追究法律责任
常见数据结构的java实现
1、链表
1.1、数组:处理类型相同的数据,使用之前必须定义大小,而且不能动态定义大小。导致的问题是,无法合理的使用内存资源。
1.2、链表:由若干个称为结点的对象组成的一种数据结构(结点包含了引用和数据)。
单链表:结点包含一个数据和下一个节点的引用。双链表:结点包含了一个数据、上一个结点的引用和下一个结点的引用。
1.3、存放结点中的数据都被看做是一个object对象。我们知道,java中任何类都是object类的子类,因此可以把任何一个对象作为链表的结点中的数据,同时需要注意的是,当使用get()方法获取一个结点对象后,要用类型转换运算符转化回原来的类型。另外,双链表LinkList类是实现了接口List的类,而List接口是Collection接口的子接口,所以LinkList类中的绝大部分方法都是接口方法的实现。
1.4、使用迭代(Iterator)方式遍历链表
List list=new LinkList();
.......................................
Iterator it=list.iterator(); //得到Iterator对象
while(it.hasNext()){
it.next();
}
相比get()方法,使用迭代遍历链表速度较快。
1.5、动态数组类ArrayList:数组采用顺序结构来存储数据,可以有效的利用空间,可以用于存储大量的数据。
数组和链表的比较:
数组不适合动态的改变它存储的数据,如增加、删除结点等,这比链表慢。由于数组采用顺序结构存储数据,数组获取第N个结点中的数据的速度要比链表获取第N个结点中的数据快。ArrayList类的很多方法与LinkList类类似,两者本质的区别是一个使用顺序存储结构,另一个使用链式结构。
2、栈
2.1、栈:一种“后进先出”的数据结构,只能在一端进行输入或输出数据的操作。先栈中输入数据叫“压栈”,从栈中取出数据的操作叫“弹栈”。
Stack类在java.util包中:
public Object push(Object ob)压栈操作
public Object pop( )弹栈操作
public boolean empty()栈中是否有数据
public Object peek()查看栈顶端的数据,但不删除该数据
public int search(Object ob)获取数据在栈中的位置
2.2、栈的使用
栈是很灵活的数据结构,使用堆栈可以节省内存的开销。比如,递归
是一种很消耗内存的算法,可借助栈消除大部分递归,达到和递归算法同
样的目的。
3、数集
3.1、
上一篇:Java基础学习笔记
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
















