几种常见的数据结构的JAVA实现
树是一个递归的数据结构,一棵树上的所有节点都可以被看成是一棵树,只不过除根节点外其他节点都比总树的规模小点而已。树的节点有三种:根节点(没有父亲节点),叶子节点(没有孩子节点),一般节点(既有父亲节点,也有孩子节点)。具体对结构的分析,几乎所有写数据结构的书中都有提到。
这棵树的实现花了好几天时间,碰到的最大问题是JAVA的泛型,在对泛型不是足够了解的事实下,似乎到处都碰到陷阱,幸亏在这中间得到了周树群同志的鼎力相助,所以在这里表扬他老人家一把:周树群是个好同志!
不管怎么说,一棵简单的树已经实现了,以后要用到树的地方就方便多了(目前为止我还没看到JDK里有专门的树的实现)。下面是这棵树的接口ITree,以及具体实现类OriginalTree。
ITree:
package utility.structure.def;
import java.util.Collection;
import java.util.List;
/**
*
* @author odie.tang
*
* @version 1.0 10/30/09
*/
public interface ITree<E>{
E getData();
void set(E e);
E remove();
int getDepth();
int getLevel();
ITree<E> getParent();
ITree<E> getFirstChild();
ITree<E> getLastChild();
ITree<E> addChild(int childIndex,E e);
void addChildren(Collection<? extends E> children);
void addChildren(int childIndex, Collection<? extends E> children);
ITree<E> addChild(E e);
ITree<E> getChild(int childIndex);
E removeChild(int childIndex);
List<ITree<E>> getChildren();
boolean isLeaf();
boolean isRoot();
ITree<E> getRoot();
boolean remove(E e);
ITree<E> getNode(E e);
}
OriginalTree:
package utility.structure;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.ConcurrentModificationException;
import java.util.List;
import java.util.NoSuchElementException;
import utility.structure.def.ITree;
/**
* @author odie.tang
* @version 1.0 , 10/30/09
*/
public class OriginalTree<E> implements ITree<E>,Serializable {
private static final long serialVersionUID =
相关文档:
String 与 StringBuffer区别:
String字符串对象是不可变的;StringBuffer是变长和可写的动态字符序列,可以自动地增加空间。
Integer var = new Integer();//有语法错误
Integer var = new Integer(2);//是对的
java的Vector成员是要用elementAt(i)成员函数来获得的,不能用ve[i]得到。
Vector::public Enumeration< ......
一个java文件中,有且只有一个public类
float ff= 1.3f;(4B)
int 4B;
long 8B;
double 8B;
byte 一字节整型
char 2B
数组
int num[] = new int[3];
int[] num;
num = new int[3];
int [] num = new int[]{1,2,3};
int [][] num;
num = new int[3][4];
//不同长
num = new int[3][];
num[0] = new int[5]; ......
出处:来源于CSDN ZangXT大虾对某篇关于java中栈与堆的文章的回复
大体分析一下
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
//栈都是由运行环境来处理的,这点C++和java没有什么不同.对于堆,不过java多了个GC.
2.这里 ......
Java连接SQLite数据库详解 下载SQLite数据库的JDBC 这里给出一个中文站点的URL: 设置环境变量: 将下载到的包解压后得到jar包 sqlitejdbc-v033-nested.jar 放到%JAVA_HOME%\lib 下,并且将其添加到classpath系统环境变量中,我的classpath系统环境变量现在为: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\li ......
1、利用System.getProperty()函数获取当前路径:
System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径
2、使用File提供的函数获取当前路径:
File directory = new File("");//设定为当前文件夹
try{
System.out.println(directory.getCanonicalPa ......