Java——容器

本文详细介绍了Java中的容器类,包括Collection接口(Set和List)、Map接口及其相关实现类的特点和用法,并通过实例展示了如何使用这些容器类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天我们讲解的是java中能够动态存放对象的类——容器类。

一、概念:

容器是Java API所提供的一系列类,其实例用于在程序中存放对象。

二、容器类的结构关系图:

三、具体讲解

容器类就是存放对象的地方,不同的接口,类就像不同的瓶子一样,装的东西也不太一样,下面我们来具体对每一种接口都进行一下讲解。

1Collection接口

概念:Collection接口定义了存取一组对象的方法,其子类接口SetList分别定义了不同的存储方式。

1.1Set接口

Set中的数据对象没有顺序且不可以重复,即“无序唯一”。

它的实现类有很多,我们只讲解其中的HashSetTreeSet

HashSet: 为快速查找而设计的Set。存入HashSet的对象必须定义hashCode()。

TreeSet: 保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。

下面我们来举一个HashSet的例子(TreeSet的类似):

1-1:声明一个Collection类对象c,添加三个元素并单个打印出来

Collection<String> c2 = newHashSet<String>();//如果采用TreeList则直接将HashSet改为TreeList即可。

c2.add("aaa"); c2.add("bbb"); c2.add("ccc"); for(Iterator<String> it = c2.iterator(); it.hasNext(); ) { String s = it.next(); System.out.println(s); }

1.2List接口

List中的数据对象有顺序且可以重复,即“有序不唯一”。

下面我们讲解它的两种实现方式:LinkedListArrayList

LinkedList采用的是链表存放元素,改动元素较快,读取元素较慢,即“改快读慢”。

ArrayList采用的是数组存放元素,读取元素较快,改动元素较慢,即“读快改慢”。

下面我们来举一个ArrayList的例子(LinkedList的类似):

1-2:同例1-1

List<String> c1 = new ArrayList<String>();//如果采用LinkedList则直接将ArrayList改为LinkedList即可。 c1.add("aaa"); c1.add("bbb"); c1.add("ccc"); for(int i=0; i<c1.size(); i++) { String s = c1.get(i); System.out.println(s); }

在使用Set的过程中我们会常用到接口Iterator接口和Comparable接口。

Iterator接口

概念:所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。

Iterator对象用以实现对容器内元素的遍历操作(参见例1-1)。

Comparable接口

概念:Comparable接口中只有一个方法compareTo(),用以确定类对象的排序方式。

2Map接口

概念Map接口定义了存储“键(Key)—值(Value)映射对”的方法。

我们来说一下它的实现类HashMapTreeMap

下面我们来举一个HashMap的例子(TreeMap的类似):

1-2:声明一个Map类型对象,添加元素并打印。

Map c2 = new HashMap();//如果采用TreeMap则直接将HashMap改为TreeMap即可。 c2.put("aaa",1); c2.put("bbb",2); c2.put("ccc",3); System.out.println(c2);

小结:

Hash即“哈希表”,所以带有Hash的都是采用哈希表的形式来存储数据的,比如HashSetHashMap

Linked即“链表”,因此带有Linked的都是采用链表的形式存储数据的,比如LinkedList

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值