Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144220
  • 博文数量: 26
  • 博客积分: 590
  • 博客等级: 中士
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-19 15:26
文章存档

2012年(10)

2011年(16)

我的朋友

分类: Java

2012-01-04 16:01:58

Java学习---集合框架
1,集合框架概述
集合框架是Java中非常重要的一种数据结构,它是用来存储对象的一个容器。在容器中可以存放多个多类型的元素。集合的概念进一步提高了java的封装思想。数据的杂乱多现象用类来封装,把各个需要的数据封装到一个具体类中,一类的形式体现对象的特性。集合是用来存储类多的现象,一层层的往上封装,体现给用户只是一个简单的接口,这在程序的开发和阅读性减轻的代码的复杂度。java的扩平台易扩展特性,充分体现出这一点。这是我个人的理解。集合中存放的元素不同,根据这些元素做了相应的处理和存储,根据不同的存储结构,集合分为了List集合和Set集合两大分支。List集合的特点就是元素具备角标,对List集合中元素的访问也多了一种方式,就是按照角标操作。List集合中的元素可以重复。Set集合的特点是元素不具备角标,元素不能重复。对元素的访问使用Iterator迭代器。
2,集合的分类及特点
Collection:
|--list:元素是有序的,元素可以重复,因为该集合体系有索引。取元素方式有两种:一种是for循环,一种是迭代器。
ArrayList:底层数组结构,特点:增加删除比较慢,查询速度快,线程不同步。
linkedList:底层是链表结构,特点:增加删除比较快,查询速度慢。
特有方法:
addFirst();addLast();
getFirst();getLast();获取元素,但不删除元素。如果没有元素会出现NoSuchElementException
removeFirst();removeLast();获取元素,但是元素被删除。如果没有元素会出现NoSuchElementException
在JDK1.6出现了替代方法。
OfferFirst();OfferLast();
peekFirst();peekFirst();获取元素,但不删除元素。如果没有元素不会出现NoSuchElementException
pollFirst();pollLast();获取元素,但是元素被删除。如果没有元素不会出现NoSuchElementException
vector:底层是数组结构。线程同步。增删改查速度都慢。被ArrayList代替。
枚举是vector特有的取出方式,vector有三种取出方式。枚举和迭代器很像。
其实枚举和迭代是一样的,因为枚举的名称以及方法的名称比较长,被迭代器取代了。
List集合判断元素是否相等使用是自身的equals方法。默认的equals方式,比较的是地址值。当我们比较元素是否相等时,如果判断的条件不一样时,需要复写equals方法。
        |--set:元素是无序,元素不重复。Set集合的方法和Collection是一致的。
|--HashSet:底层结构式哈希表。
在对HashSet集合存储元素的时候,首先调用hashCode()方法获得给对象的哈希值,当以后加入元素时,也是首先获得该元素的哈希值,然后跟集合中已有元素的h哈希值比较,如果哈希值不等,不会调用equals()方法,元素存储成功。如果新加元素和已有某个元素的哈希值相同,在调用equals()判断是否为同一元素,做进一步的判断,这个可以根据自己的条件复写hashCode()和equals().HashSet集合对元素不会进行默认排序。
注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素hashCode和equals
|--TreeSet:可以对set集合中的元素进行排序。TreeSet集合中的元素要具备比较性,存储多个不具备比较性的元素,编译时会报错。是元素具备比较性的方式有两种:实现comparable接口和在创建集合时传递比较器comparator。
3,集合的实例分析。
阅读(1763) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

pzm07292012-02-21 12:01:19

不错·