HIT软件构造——集合类概述

在java.util包中提供了一些集合类,这些集合类又被称作容器,顾名思义,就是装载其他数据结构的集合。这些集合类的长度是可变的,用于存放对象的引用。常用的集合类有List、Set和Map。其中,List与Set继承了Collection接口,其关系如下:

1.Collection接口方法

Collection接口是层次结构中的根接口。构成Collection的单位称为元素。该接口通常不直接使用,但为继承类提供了添加,删除,管理元素的方法。

        方法                                     功能描述
add(E e)      将指定对象添加到集合中
remove(Object o)      将对象从集合中删除
isEmpty()      判断当前集合是否为空
itetator()      返回一个当前集合的迭代器
size()      返回当前集合中元素个数

其中,迭代器的相关操作定义在迭代器类Iterator中,常用方法有hasNext(),Next()等。下面给出一个用迭代器遍历集合的例子。

import java.util.*;
public class Test{
    public static void main(String args[]){
        Collection<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        Iterator<String> it =  list.iterator();
        while(it.hasNext()){
            String str = (String)it.next();
            System.out.println(str);
        }
    }
}

2.List集合

List中除了继承Collection方法外,还额外定义了两个方法。

1.get(int index):获得指定索引处的元素,可以理解为数组索引。

2.set(int index , Object o):将集合指定位置修改为指定对象。

可以看到上述两种方法十分类似数组的操作。对于初学者来说,List的操作更加简单与宽泛,接近C语言中的数组基本操作。

List接口的实现方式有两种,分别是ArrayList与LinkedList,两者的操作几乎完全一致,区别在于其实现方式。ArrayList的查找操作实现较快,而LinkedList的插入与删除操作较快。

下面给出另一种针对List的不用迭代器的遍历方法。

for(int i = 0 ; i < list.size() ; i++)
{
    System.out.println(list.get(i)); //可以是其他相关操作
}

3.Set集合

Set接口的实现类也有两种,分别是HashSet以及TreeSet。其中HashSet由哈希表支持,不能保证Set中元素的迭代顺序。而TreeSet不仅实现了Set接口,同时还实现了java.util.SortedSet接口,因此在遍历集合时按照自然顺序递增。下面是TreeSet中增加的方法

             方法                                   功能描述
 first()  返回Set中的第一个元素
 last()  返回Set中最后一个元素
 comparator()  返回一个比较器,若Set使用自然顺序,则返回null
 headSet(E toElement)  返回一个新的Set,内容为toElement之前的所有对象(不包含toElement)
 subSet(E from  , E to)  返回一个新的Set,内容为from到to的所有对象,左闭右开
 tailSet(E from)  返回一个新的Set,内容为from后的所有对象,包含from

4.Map集合

Map没有继承Collection接口,是因为Map的表述含义与List和Set不同。后两者存储的是单元对象,而Map存储的则是对象与对应值的一种映射关系,提供key到value的映射。一个key只能映射一个value。

下面是Map接口中常用的方法:

            方法                                 功能描述
put(K key , V value)向集合中添加key到value的映射关系
containsKey(Object key)

若包含关于key的映射关系,返回true

containsValue(Object value)若包含关于value的映射关系,返回true
get(Object key)

返回key对应的value,没有返回null

keySet()返回一个由集合中所有key组成的Set集合
values()返回一个有集合中所有values形成的Collction集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值