JAVA学习笔记 -- 数据结构

一、数据结构的接口

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

1、Collection接口

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

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <span style="white-space:pre">    </span>//下面是Collection接口的一些常用方法  
  2.     boolean add(Object obj);    
  3.     boolean addAll(Collection c);  
  4.     boolean contains(Object o);  
  5.     boolean containsAll(Collection c);  
  6.     boolean isEmpty();  
  7.     int size();  
  8.     void clear();  
2、Iterator接口
[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <span style="white-space:pre">    </span>Xx xx = new Xx();  
  2.     Iterator iterator = xx.iterator();  
iterator()是Collection接口中的方法,它会返回在xx的元素上进行迭代的迭代器。并且迭代置于集合的第一个元素前面。
[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //下面是Iterator接口的一些常用方法  
  2. boolean hasNext();//判断迭代是否到达了集合末尾  
  3. Object next();//返回迭代的下一个元素  
  4. 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)

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

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <span style="white-space:pre">    </span>//构造器  
  2.     Hashtable(int initialCapacity, float loadFactor)  
  3.     //initialCapacity 表示初始化容量 缺省值为 11  
  4.     //loadFactor 表示装填因子 缺省值为0.75  
  5.           
  6.     //主要方法  
  7.     Object put(Object key, Object value);  
  8.     //加入一个元素  
  9.     //返回此哈希表中指定键的以前的值,如果不存在该值,则返回 null   
  10.     Object get(Object key);//返回此哈希表中指定键的值  
  11.     boolean containsKey(Object key);  
  12.     boolean containsValue(Object key);  
  13.     Object remove(Object key);//删除指定键元素,返回指定键映射的值  
  14.     Collection values();//返回此表所包含元素的集合    
4、哈希集(HashSet)

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

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

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

5、树集(TreeSet)

有序的数据结构。

a、构造器: TreeSet()

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

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. class Student implements Comparable  
  2. {  
  3.     public int compareTo(Object other)  
  4.     {  
  5.     <span style="white-space:pre">    </span>//具体实现  
  6.     }     
  7. }  
b、构造器:TreeSet(Comparator c)

此时,可以通过实现Comparator接口中的compare方法,定义自己的比较方法。

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. class StudentComparator implements Comparator  
  2. {  
  3.     public compare(Object a, Object b)  
  4.     {  
  5.         //具体实现  
  6.     }  
  7. }  
  8. StudentComparator comp = new StudentComparator();  
  9. TreeSet set = new TreeSet(comp);  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值