java的动态数据结构和泛型

动态数据结构和泛型

0详细介绍java中的数据结构

也许你已经熟练使用了java.util包里面的各种数据结构,但是我还是要说一说java版数据结构与算法,希望对你有帮助。

线性表,链表,哈希表是常用的数据结构,在进行

Collection

├List

│├LinkedList

│├ArrayList

│└Vector

│ └Stack

└Set

Map

├Hashtable

├HashMap

└WeakHashMap

Collection接口

Collection

所有实现

如何遍历

1Iteratorit=collection.iterator();//获得一个迭代子

2while(it.hasNext()){

3Objectobj=it.next();//得到下一个元素

4}

主要方法:

·booleanadd(Objecto)添加对象到集合

·booleanremove(Objecto)删除指定的对象

·intsize()返回当前集合中元素的数量

·booleancontains(Objecto)查找集合中是否有指定的对象

·booleanisEmpty()判断集合是否为空

·Iteratoriterator()返回一个迭代器

·booleancontainsAll(Collectionc)

·booleanaddAll(Collectionc)

·voidclear()删除集合中所有元素

·voidremoveAll(Collectionc)

·voidretainAll(Collectionc)

List接口

List

和下面要提到的

除了具有

实现

主要方法:

·voidadd(intindex,Objectelement)在指定位置上添加一个对象

·booleanaddAll(intindex,Collectionc)

·Objectget(intindex)

·intindexOf(Objecto)

·Objectremoveint(intindex)删除指定位置的元素

·Objectset(intindex,Objectelement)

LinkedList类

LinkedList

注意

5Listlist=Collections.synchronizedList(newLinkedList(…));

ArrayList类

ArrayList

size

每个

主要方法:

·Booleanadd(Objecto)将指定元素添加到列表的末尾

·Booleanadd(intindex,Objectelement)在列表中指定位置加入指定元素

·BooleanaddAll(Collectionc)将指定集合添加到列表末尾

·BooleanaddAll(intindex,Collectionc)在列表中指定位置加入指定集合

·Booleanclear()删除列表中所有元素

·Booleanclone()返回该列表实例的一个拷贝

·Booleancontains(Objecto)判断列表中是否包含元素

·BooleanensureCapacity(intm)

·Objectget(intindex)返回列表中指定位置的元素

·IntindexOf(Objectelem)在列表中查找指定元素的下标

·Intsize()返回当前列表的元素个数

Vector类

Vector

Stack类

Stack

Set接口

Set

很明显,

请注意:必须小心操作可变对象(

Map接口

请注意,

主要方法:

·booleanequals(Objecto)比较对象

·booleanremove(Objecto)删除一个对象

·put(Objectkey,Objectvalue)

Hashtable类

Hashtable

添加数据使用

Hashtable

使用

6Hashtablenumbers=newHashtable();

7numbers.put(“one”,newInteger(1));

8numbers.put(“two”,newInteger(2));

9numbers.put(“three”,newInteger(3));

要取出一个数,比如

10Integern=(Integer)numbers.get(“two”);

11System.out.println(“two=”+n);

由于作为

如果相同的对象有不同的

Hashtable是同步的。

HashMap类

HashMap

WeakHashMap类

WeakHashMap

总结

如果涉及到堆栈,队列等操作,应该考虑用

如果程序在单线程环境中,,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。

要特别注意对哈希表的操作,作为

尽量返回接口而非实际的类型,如返回

希望对你有帮助。

1List

分为顺序存储和链式存储。顺序存储便于查询,直接通过地址计算就可以获取。链式存储便于对象操作,只需要改变连接,新的节点可以在内存中的任何地方不能随即访问。

1.1ArrayList

本质是动态数组,顺序存储的表

缺点:

(1)使用ArrayList比使用数组效率更低;

ArrayList<String>list=newArrayList<String>(10);

对象的复制不可以直接使用赋值语句,否则只是多了一个引用。应该使用clone函数

使用

遍历的方法

推荐使用

也可以使用迭代的方法:

for(Iteratorit2=list.iterator();it2.hasNext();){

  System.out.println(it2.next());

}

1.2LinkedList

本质是链式存储的表,使用与ArrayList十分相似。但只有在需要的时候分配内存以存储新的数据项,并在数据项删除时释放内存。

2Set

无重复元素集合类

2.1HashSet好想从现在开始抱着你,紧紧地抱着你,一直走到上帝面前。

java的动态数据结构和泛型

相关文章:

你感兴趣的文章:

标签云: