• JAVA学习笔记 -- 数据结构


    一、数据结构的接口

    在Java中全部类的鼻祖是Object类,可是全部有关数据结构处理的鼻祖就是Collection和Iterator接口,也就是集合与遍历。

    1、Collection接口

    Collection c = new Xx(); // c能够称为Collection接口回调对象。尽管它被声明为Collection类型,可是实例化时实现的是接口的实现类Xx。它的方法也是用来操作实现类的对象。

    <span style="white-space:pre">	</span>//以下是Collection接口的一些经常用法
    	boolean add(Object obj);  
    	boolean addAll(Collection c);
    	boolean contains(Object o);
    	boolean containsAll(Collection c);
    	boolean isEmpty();
    	int size();
    	void clear();
    2、Iterator接口
    <span style="white-space:pre">	</span>Xx xx = new Xx();
    	Iterator iterator = xx.iterator();
    iterator()是Collection接口中的方法。它会返回在xx的元素上进行迭代的迭代器。而且迭代置于集合的第一个元素前面。
           //以下是Iterator接口的一些经常用法
           boolean hasNext();//推断迭代是否到达了集合末尾
           Object next();//返回迭代的下一个元素
           void remove();//移除迭代指向的最后一个元素
    next()方法能够理解为:迭代往下移一位,返回迭代条过的元素。Xx xx = (Xx)iterator.next() 取出来的元素类型为Object须要转换。

    java数据结构库还提供了一个Iterator的子接口——ListIterator,能够实现将元素插入指定位置和逆向遍历等操作。具体查阅API。

    二、数据结构的几个重要的类

    1、链表(LinkedList)

    攻克了数组删除元素开销大的问题,可是查询元素须要从链表头遍历。每一个元素有两个指针,next指向下一个元素,previous指向上一个元素。

    LinkedList类实现了Collection接口。

    2、数组列表类(ArrayList)

    数组列表能够依据程序执行时的需求动态的伸缩。

    ArrayList类实现了Collection接口。

    3、哈希表(Hashtable)

    通过散列码存取。实现高速查询特定元素的数据结构。以键—值的形式存储元素,必须保证键是唯一的,值能够不唯一。

    <span style="white-space:pre">	</span>//构造器
    	Hashtable(int initialCapacity, float loadFactor)
    	//initialCapacity 表示初始化容量 缺省值为 11
    	//loadFactor 表示装填因子 缺省值为0.75
    		
    	//主要方法
    	Object put(Object key, Object value);
    	//增加一个元素
    	//返回此哈希表中指定键的曾经的值。假设不存在该值,则返回 null 
    	Object get(Object key);//返回此哈希表中指定键的值
    	boolean containsKey(Object key);
    	boolean containsValue(Object key);
    	Object remove(Object key);//删除指定键元素。返回指定键映射的值
    	Collection values();//返回此表所包括元素的集合	
    4、哈希集(HashSet)

          与哈希表类似,仅仅是Hashtable实现的是Set接口,而HashSet实现的是Map接口还有Collection接口。

          构造方法的默认初始容量是 16,载入因子是 0.75。

          另外非常重要的一点是哈希表是线性同步的。而哈希集是非线性同步的。

    5、树集(TreeSet)

    有序的数据结构。

    a、构造器: TreeSet()

    此时。向树集加入字符串对象,由于它已经实现了Comparable接口,compareTo方法是按字典序比較字符串的。所以树集元素按字典序排列,当然也能够定义自己的排序方法:

    	class Student implements Comparable
    	{
    		public int compareTo(Object other)
    		{
    		<span style="white-space:pre">	</span>//详细实现
    		}	
    	}
    b、构造器:TreeSet(Comparator c)

    此时,能够通过实现Comparator接口中的compare方法,定义自己的比較方法。

    class StudentComparator implements Comparator
    {
    	public compare(Object a, Object b)
    	{
    		//详细实现
    	}
    }
    StudentComparator comp = new StudentComparator();
    TreeSet set = new TreeSet(comp);

  • 相关阅读:
    jquery1.9之学习笔记
    ERROR: Removing 'hello': Device or resource busy
    windows虚拟机性能调整
    kvm虚拟机控制台登录配置
    KVM虚拟机的管理
    window kvm 虚拟机的创建
    kvm虚拟化环境的搭建
    C实现哈希表
    哲学家就餐问题 C语言实现
    Linux面试题
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5203307.html
Copyright © 2020-2023  润新知