编程之道

无论是批评的,赞扬的,指着的都请EMAIL给我,你的建议将是我前进的动力! 联系我

Java学习笔记-集合框架

集合框架是提供管理对象集合的接口和类,它包含3个组件:


1.接口 :表示集合的抽象数据类型
   a.Collection接口:是构建集合框架的根。
   b.Set接口:扩展了Collection接口,它不允许有重复元素。
   c.List接口:扩展了Collection接口,一些集合具有顺序,通常被成为列表。
   d.Map接口:没有继承Collection接口,具有键和值的对象。不能包含重复键,但可以包含重复值。

2.类 :用于存储集合的实际数据对象
   a.ArrayList :优点是可以动态添加数据元素,遍历效率比LiskedList快。
   b.LinkedList:这是一种链表的数据结构,它和数组的区别在于数组是一段连续的内存空间,而
链表可以是不连续的,这一点就说明了链表对内存空间的合理利用。看下单向链表的结构图:

头节点先指向第1个节点,然后节点1的指针域又指向下一个节点,最后由于节点3后面没元素了,就为null。
试想一下当对链表进行插入删除的时候只需要将指针域的指向改变一下就可以达到所需效果,而数组插入
删除的时候需要将插入或删除的位置后所有元素后移或前移,很显然在算法上插入删除操作链表要比数组快。
说了这么多数组与链表的区别,下面来看看LinkedList这个类怎么用:

import java.util.*;

public class linkedlist
{
 
public static void main(String[] args)
 
{
  LinkedList linked
=new LinkedList();
  
//add element
  linked.add("111");
  linked.add(
"222");
  linked.addFirst(
"111");//allow repeat
  linked.addLast("555");
  System.
out.println(linked);
  
//insert element
  linked.add(1,"333");
  System.
out.println(linked);
  
//modify 
  linked.set(2,"555");
  System.
out.println(linked);
  
//remove
  linked.remove(2);
  System.
out.println(linked);
 }

}

   c.HashSet:一看就知道是哈西散列表的集合类,不能有重复元素。例子免了,比较简单的,上段代码我已经
后悔写了,用过java的都知道。
   d.TreeSet:将元素储存在树中,适合快速检索大量排序信息。
   e.HashMap:HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

3.算法 :用于操作集合,并被定义为Collections类中的静态方法,给个例子就很好理解了

import java.util.*;

public class linkedlist
{
 
public static void main(String[] args)
 
{
  LinkedList linked
=new LinkedList();
  
//add element
  linked.add("111");
  linked.add(
"222");
  linked.addFirst(
"333");
  linked.addLast(
"555");
  System.
out.println(linked);
  
//来个排序
  Collections.sort(linked);
  System.
out.println(linked);
  
//如果要反转排的要定义一个Comparator的接口
  Comparator cmp=Collections.reverseOrder();
  Collections.sort(linked,cmp);
  System.
out.println(linked);
 }

}




还有N多方法,自己去试试把。

其实还有很多集合类和接口:
最后总结下结合框架的优点(抄书):
1.集合框架提供了一组可用的集合接口
2.提供了有效的数据结构和算法,减少了编程量
3.使我们方便的扩展集合
4.设计新API的工作降到最少
5.接口算法的可重用性提高了软件的可重用性

posted on 2005-08-19 06:55 疯流成性 阅读(396) 评论(0)  编辑  收藏 所属分类: j2se


只有注册用户登录后才能发表评论。


网站导航: