Java学习笔记【八、数据结构】

参考资料:
http://www.cnblogs.com/janneystory/p/5758958.html array arraylist list linklist的区别
http://www.cnblogs.com/skywang12345/p/3311275.html iterator enumeration 的区别
http://www.cnblogs.com/langtianya/archive/2013/03/19/2970273.html hashmap hashtable 的区别

由Java工具包提供

  • 链表
  • 枚举
  • 位集合
  • 向量
  • 字典
  • 哈希表
  • 属性

链表LinkedList

构造

LinkedList()

方法

boolean add(Object e)
void add(int index ,Object e) 向指定位置添加一个元素
void addFirst(Object e)
void addLast(Object e)
Object get(int index)
Object getFirst()
Object getLast()
Object set(int index,Object e) 将某位置元素替换为e
void clear()
int size()
boolean contains(Object e)
Object remove(int index)
Iterator iterator() 返回一个迭代器,用于遍历

枚举Enumeration

public enum TestEnum{A,B,C}

方法

  • e.haMoreElements()
  • e.nextElement()

Enumeration与Iterator的区别:

  • 都是接口,Iterator比较新,且多一个删除方法remove()
  • Iterator比Enumeration多一个fail-fast机制,多线程访问时可能会触发
  • Enumeration包含:hasMoreElements/nextElement
  • Iterator包含:hasNext/next/remove

位集合BitSet

实现了一组可以单独设置和清楚的标志

构造

BitSet()
BitSet(int size)

方法

b1.and(b2) 与运算,结果存在b1
b1.or(b2) 或运算,结果存b1
b1.xor(b2) 异或运算,结果存b1

    import java.util.BitSet;

    public class BitSetDemo {

    private static BitSet b1 = new BitSet();
    private static BitSet b2 = new BitSet();
    public static void main(String[] args) {
	// TODO Auto-generated method stub
	for(int i=0;i<15;i++){
		if(i%2==0){
			b1.set(i);
		}
		if(i%5!=0){
			b2.set(i);
		}
	}
	p();
	
	b2.and(b1);//与过之后,b2就被改变了,变成了交集
	p();
	
	b2.or(b1);//用改变后的b2再或b1,
	p();
	
	b2.xor(b1);
	p();
    }

    private static void p(){
	System.out.println("b1: " + b1.toString());
	System.out.println("b2: " + b2.toString());
	System.out.println();
    }
    }

向量Vector

构造

Vector()
Vector(int size)
Vector(int size,int incr) 由于Vector的大小可以动态增长,此处param2指定每次增长的空间大小
Vector(Collection c) 用Collection初始化Vector

方法

void add(int index,Object element)
boolean add(Object element) 加在末尾
void addElement(Object element) 与add返回不同,功能一致
int size() 返回当前实际存储了值的大小
int capacity() 返回当前总容量
void clear() 清除所有元素
boolean contains(Object element) 是否包含
Enumeration elements() 返回包含所有元素的枚举,用于遍历(hasMoreElements/nextElement)
Object get(int index) 获取指定位置元素
Object firstElement() 获取第一个元素
Object lastElement() 获取最后一个元素

    import java.util.Enumeration;
    import java.util.Vector;

    public class VectorDemo {

    public static void main(String[] args) {
	// TODO Auto-generated method stub
	Vector v = new Vector(3,2);
	v.add(1);
	v.add(2);
	v.add(3);
	System.out.println(v.capacity());
	v.add(4);
	System.out.println(v.capacity());
	v.addElement(5);
	v.addElement(6);
	System.out.println(v.capacity());
	Enumeration e = v.elements();
	while(e.hasMoreElements()){
		System.out.print(e.nextElement()+" ");
	}
    }

    }

栈Stack

后进先出,Vector的一个子类

构造

Stack()

方法

boolean empty() 测试是否为空
Object peek() 查看栈顶对象,但不移除
Object pop() 返回栈顶对象,并移除
Object push(Object o) 将对象压入栈顶
Object search(Object o) 查找o,返回索引

    import java.util.Stack;

    public class StackDemo {

    public static void main(String[] args) {
	// TODO Auto-generated method stub
	Stack s = new Stack();
	System.out.println(s.empty());
	
	s.push(1);
	s.push(2);
	System.out.println(s.toString());
	
	s.peek();
	System.out.println(s.toString());
	
	System.out.println(s.search(2));
	
	System.out.println(s.indexOf(1));
	
	s.pop();
	System.out.println(s.toString());
    }
    }

字典Dictionary(已过时)

Map接口(类似于Dic,实现类有HashMap、Set、Hashtable、Collection)

HashMap方法

void clear()
boolean containsKey(Object k)
boolean containsValue(Object v)
Object pub(Object k,Object v)
Object get(Object k)

哈希表Hashtable

构造

Hashtable()
Hashtable(int size)
Hashtable(int size,float fillRatio) param2为填充比例 介于0.0-1.0之间
Hashtalbe(Map m) 用m中的元素初始化hashtable

方法

Object put(Object k,Object v)
Object get(Object k)
Enumeration keys()

HashMap和Hashtable 的区别

HashMap:轻量级、非线程安全、允许null作为key、value、有containsKey/containsValue方法
Hashtable:较重、线程安全、不允许null、包含contains方法(比较旧)

posted @ 2017-02-19 12:43  l.shane  阅读(297)  评论(0编辑  收藏  举报