通用集合库

原创 2004年09月20日 17:57:00

4.4 通用集合库

   

12.gif1.The Collections API

. 一个collection是一个对象,它包含了一组object对象。
. The Collection API 包含了3个接口 ,它将object组织为:
. Collection : 一组 objects ,没有特殊的顺序,允许重复元素。
. 个List(列表):必须按特定的顺序容纳元素,允许重复元素。
. 一个Set(集):没有特殊的顺序,不可包含任何重复的元素。

c42.JPG

见例题:
setExmple.java
ListExmple.java

12.gif2.Map

. Map(接口) 维持“键-值”对应关系(对),以便通过一个键查找相应的值

.HashMap基于一个散列表实现(用它代替Hashtable)。针对“键-值”对的插入和检索,这种形式具有最稳定的性能。
c43.JPG
见例题:
PrintingContainers.java
填充containers:只能List, 不能Set or Map
见例题:
FillingLists.java
Container 缺点:
. 不知道数据类型
. 必须自己做类型转换

见例题:Cat.java
Dog.java
CatsAndDogs.java

c43.JPG

比较List, LinkedList, ArrayList
List(接口) 顺序是List最重要的特性:
. 元素按照规定的顺序排列。
.List为Collection添加了大量方法:
. 在List中部插入和删除元素
. (ListIterator(列表反复器),利用它可在一个列表里朝两个方向遍历,同时插入和删除位于列表中部的元素
比较List, LinkedList, ArrayList
. ArrayList: 允许我们快速访问元素,但在从列表中部插入和删除元素时,速度却嫌稍慢。一般只应该用ListIterator对一个ArrayList进行向前和向后遍历,不要用它删除和插入元素;

. LinkedList:可以高效率地在列表中部进行插入和删除操作。但在进行随机访问时,速度慢. 提供了addFirst(),addLast(),getFirst(),getLast(),removeFirst()以及removeLast()(未在任何接口或基础类中定义),以便将其作为一个规格、队列以及一个双向队列使用
用LinkedList实现队列(queue)操作。
见例题:Queue.java
Map综合例题:
Map1.java
数组
Arrays类为所有基本数据类型的数组提供了一个过载的sort()和binarySearch(),它们亦可用于String和Object。

见例题:Array1.java

12.gif3.反复器

Iterators反复器:
反复器是用来提取集合中的元素的。
. An Iterator of a Set 是无序的。
. ListIterator of a List 能前后遍历移动

Iterators反复器:
见例题:

CatsAndDogs2.java
HamsterMaze.java
见Iterators反复器和Collection 的综合例题:Collection1.java

12.gif4.排序和搜索

可用与数组相同的形式排序和搜索一个列表(List)。用于排序和搜索列表的静态方法包含在类Collections中,sort(List)用于对一个实现了Comparable的对象列表进行排序;binarySearch(List,Object)
数组元素可以是基本数据类型和引用数据类型。数组元素类型明确。可以是多维。缺点是一旦创建好后,不能变大小。
Colloction存放一组单个元素,而Map存放一组元素对
List向数组一样存放有序的元素,但不能存放基本数据类型,读取元素时需要类型转换。
ArrayList用于随机读取数据。LinkedList用于从中间插入删除大量数据。
LinkedList 用于实现队列和堆栈
Map 用于连接一对object-object。HashMap用于快速查找。

. Set 不能接受重复元素。HashSet用于提供快速查找。

12.gif5.Collections类

1.Enumeration 接口

Enumeration 接口使用两个方法来检索一系列对象或值:
nextElement():获得下一个对象
hasMoreElements():检查序列中是否还有更多的对象

注意:
Enumeration 接口的的元素只能被访问一次。
2.Vector 类
Vector 类实现了可增长数组的功能。数组既可以变大也可以变小。
功能:增加、删除和插入对象;测试Vector中的内容和检索指定的对象。

见例题:example66Vector.txt

3.堆栈 Stack
Stack类扩展了Vector类,继承了Vector类的方法。它实现了后进先出的功能。

创建Stack类: new Stack()
常用方法:
Object push(Object o)
Object pop()
Object peek()
boolean empty()
int search(Object o)

见例题:example67Stack.txt
4.散列表 Hashtable
散列表也可以存储未定数目的对象对(key/element)。它可以实现将不同类型的对象放入同一个散列表。
一些常用的方法有:
put(Object key, Object value)
get(Object key)
remove(Object Key)
elements()
keys()
size()
isEmpty()

见例题: example68HashApp.txt
散列表可以实现将不同类型的对象放入同一个散列表。它要与强制类型转换相配合。

见例题:example68Hashtable.txt

5.StringTokenizer 类
StringTokenizer 类用来创建String对象的语法分析程序。它根据一组定界符对字符串进行语法分析。它执行了Enumeration接口。

一些常用的方法有:
hasMoreTokens()
nextToken()
countTokens()
nextElement()
hasMoreElements()

见例题:example69Token.txt
6.Math 类
Math类中包含了一组静态数学方法,包括:代数、三角、指数、对数、随机数等。
例题:
public class MathApp {

public static void main(String[] args) {
System.out.println(Math.E);
System.out.println(Math.PI);
System.out.println(Math.abs(-1));
System.out.println(Math.max(3,5));

for(int i=0;i<5;i++)
System.out.print(Math.random()+" ");
System.out.println();
}
}

 

Klib - C语言通用库

Klib - C语言通用库samtools,bwa等软件都会设计到这个库,在项目中也比较方便加入这个库。 来自:https://github.com/attractivechaos/klib简介Kl...
  • biubiuv
  • biubiuv
  • 2016年02月21日 21:08
  • 1034

集合与通用集合

本文描述了 Jakarta 项目 commons-collection,其当前版本是 2.1 版。本文对 j2sdk 集合框架的整理和例子示例可以大大加快程序员熟悉和使用集合,文中的例子虽然没有覆盖所...
  • kjfcpua
  • kjfcpua
  • 2013年09月06日 13:33
  • 707

Makefile之大型工程项目子目录Makefile的一种通用写法

原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8902133,作者:gqb666    管理Linu...
  • sdulibh
  • sdulibh
  • 2014年04月24日 13:52
  • 1379

C语言的集合库C语言STL

C语言STL模板的,好吧,我承认,用集合来描述比较合适。下面是项目地址:     https://github.com/mtaxot/c-collection      java用的是集合...
  • mtaxot
  • mtaxot
  • 2016年12月26日 12:48
  • 7887

[C/C++标准库]_[初级]_[集合操作]

场景: 1.需要合并集合或过滤出不同集合里的元素便于操作.如一个集合里有索引值1,2.总集合里有1,2,3,4,5.需要找出3,4,5时,就需要set_symmetric_difference #...
  • infoworld
  • infoworld
  • 2014年02月07日 18:38
  • 1387

条码通用库PLLB

~g2fk;     /******************************************************************************      Mo...
  • Trassion
  • Trassion
  • 2013年05月17日 01:30
  • 2321

Android开源项目以及开源库集合(持续更新中)

UI Awesome-MaterialDesign – MaterialDesignCenter改名为Awesome-MaterialDesign,优化了布局,新增了不少库。awesome-andr...
  • lixuce1234
  • lixuce1234
  • 2017年05月27日 16:12
  • 3639

Guava:谷歌开发的集合库

Guava:谷歌开发的集合库,通过build path->Add External JARs 把guava.jar包加进去。 版本控制工具:1.CVS 2.SVN 3.git 所以需要下载git客户...
  • CSDN_BING
  • CSDN_BING
  • 2016年05月22日 22:24
  • 232

几个标准模板库常用功能示例

1. 对std::map按key查找 方法: bool map_finder_by_key(std::pair aPair, CString strKey) { return 0 == ...
  • a_dev
  • a_dev
  • 2017年03月09日 15:52
  • 219

Java开源Html解析类库(转载)

NekoHTML  NekoHTML是一个简单地HTML扫描器和标签补偿器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能投扫...
  • fantasyagain
  • fantasyagain
  • 2015年04月07日 17:10
  • 817
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通用集合库
举报原因:
原因补充:

(最多只允许输入30个字)