11级_Java_曹建波4.25 Java中的集合类


Java用集合类来容纳不同种类的数据,这种容纳是建立在未知的基础上,即Java要用有限种类的集合类,来容纳无限种类的数据对象。

分类:Java的集合类可以分为三类:集、列表和映射

集(Set):和数学上的“集合”概念相对应,是最简单的一种集合。

Set集合中不区分元素的顺序,因此也就不记录元素的加入顺序。

Set集合中不包含重复元素,即任意的两个元素e1和e2都有e1.equals(e2)=false,并且最多有一个null元素。

列表(List)
List列表区分元素的顺序,即List列表能够精确的控制每个元素插入的位置,用户能够使用索引(元素在List中的位置)来访问List中的元素。和Set集合的不同,List允许包含重复元素。

映射:保存的是“键-值”对信息,即Map中存储的每个元素都包括起标识作用的“键”和该元素的“值”两部分,查找数据时不需提供相应的“键”,才能查找到该“键”所映射的“值”。因此,Map集合中不能包含重复的“键”,并且每个“键”最多只能映射一个值。

java.util.List接口描述的是列表结构,允许程序员对列表元素的插入位置进行精确控制,并增加了根据元素索引来访问元素、搜索元素等功能。在继承父接口Collection的基础之上,List接口新增的相应方法:

void add(int index, E element) boolean add(E e)

E remove(int index) boolean remove(Object o)

E get(int index)

int size()

int indexOf(Object obj)

List<E> subList(int fromIndex, inttoIndex)

void clear()

Java.util.List接口的实现类有多个,分别体现了列表的不同分化形式。

ArrayList

Vector

Stack

LinkedList

先进后出的Stack类

Stack是Vector类的子类,特点: “后进先出”(Last In First Out)类型的容器,即最后一个被“压(push)”进堆栈中的对象,会被第一个“弹(pop)”出来。

构造方法

Stack() :用于创建支持“后进先出”访问方式的对象
例:Stack st=newStack();
Stack <String> st = newStack();

其他方法

E peek() 返回栈顶元素,但没有弹出栈顶元素

E pop() 弹出栈顶元素,并返回其中的对象。

E push(E item) 向堆栈顶端压入item对象,同时将item对象返回。

boolean empty() 判断堆栈是否为空,如果该堆栈为空,返回true,反之返回false。

LinkedList类:链式存储方式

(1)可以根据数组起始地址和其中元素的索引号,很快地定位到数组中的任意元素

(2)插入、删除元素等操作效率底

1)链表中元素访问的代价要比数组高。

(2)能很方便地完成元素的插入和删除工作

实现了Set接口的类HashSet

“基于散列表”的检测重复元素的策略:HashSet里的元素值同这个元素在Set里所存放的索引位置有个对应关系(散列函数),在HashSet里插入元素前,可根据这个元素值和对应关系,计算出这个元素在HashSet里的插入位置,如果在这个位置里(或位置周围)已经存在了待插入元素的值,则不能插入。

构造方法

HashSet()

HashSet(<E> c)

其他方法

boolean contains(Object o) 判断是否存在指定元素

例10.6 HashSet类的综合应用。

Set<String> set = newHashSet<String>();

set.add("One"); set.add("One");

System.out.println(set.size()); //输出元素个数为:1

set.add(“Two”); System.out.println(set.size()); // 元素个数:2

System.out.println(set.contains(“One”)); //true,包含元素“One”

第一类集合有着共同的特性:它们存储的对象都是一元的(线性的),只不过存储的方式和使用的数据结构不同,以Collection为基类--封装了线性表的插入、删除等基本操作。

List接口和Set接口都是Collection的子接口

实现List接口:基于线性链表来存放数据的,例如Vector

实现Set接口:它们不允许有重复的元素,例如HashSet。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值