Java集合类总结

Java集合类主要负责保存、盛装数据,因此集合类也称容器类。

在认识collection之前,需要分清三个概念

        1. collection集合,用来表示任何一种数据结构; 

        2. Collection集合接口,指的是java.util.Collection接口,是Set、List和Queue接口的超类接口;            

        3. Collections集合工具类,指的是java.util.Collections类。

这里说的集合指的是小写的collection,集合有4中基本形式,其中前三类的父接口指Collection

        1.Set关注事物的唯一性,代表无序、不可重复的集合;

        2.List关注事物的索引列表,代表有序、可重复的集合;

        3.Queue关注事物被处理时的顺序,代表队列结合;

        4.Map关注事物的映射和键值的唯一性,代表具有映射关系的集合;

一、Collection 接口

        Collection接口是 Set List Queue 接口的父接口,提供了多数集合常用的方法声明,包括 add()remove()contains() size() iterator() 等。

add(E e)

将指定对象添加到集合中

remove(Object o)

将指定的对象从集合中移除,移除成功返回true,不成功返回false

contains(Object o)

查看该集合中是否包含指定的对象,包含返回true,不包含返回flase

size()

返回集合中存放的对象的个数。返回值为int

clear()

移除该集合中的所有对象,清空该集合。

iterator()

返回一个包含所有对象的iterator对象,用来循环遍历

toArray()

返回一个包含所有对象的数组,类型是Object

toArray(T[] t)

返回一个包含所有对象的指定类型的数组

 1、List接口

        List关心的是索引,与其他集合相比,List特有的就是和索引相关的一些方法:get(int index)、add(int index,Object o)、indexOf(Object o)

        ArrayList可以理解为一个可增长的数组,提供快速迭代随机访问的能力。

        LinkedList中的元素是双链接的,当需要快速插入和删除时LinkedList最为合适。

        Vector是ArrayList的线程安全版本,性能比ArrayList低,很少使用。

2、Set接口

        Set关心唯一性,不允许重复。

        HashSet:当不希望集合中有重复值,并且不关心元素之间的顺序时可以使用。

        LinkedHashSet:当不希望集合中有重复值,并且希望按照元素的插入顺序进行迭代遍历时使用。

        TreeSet:当不希望集合中有重复值,并且希望按照元素自然顺序进行排序时使用。

(自然顺序意思是某种和插入顺序无关,而是和元素本身的内容和特质有关的排序方式,譬如“abc”排在“abd”前面。)

3、Queue接口

        Queue用于保存将要执行的任务列表。

        LinkedList同样实现了Queue接口,可以实现先进先出的队列

        PriorityQueue 用来创建自然排序的优先级队列。

二、Map接口

        Map接口的常用方法如下表所示:

put(K key, V value)

向集合中添加指定的键值对

putAll(Map <? extends K,? extends V> t)

把一个Map中的所有键值对添加到该集合

containsKey(Object key)

如果包含该键,则返回true

containsValue(Object value)

如果包含该值,则返回true

get(Object key)

根据键,返回相应的值对象

keySet()

将该集合中的所有键以Set集合形式返回

values()

将该集合中所有的值以Collection形式返回

remove(Object key)

如果存在指定的键,则移除该键值对,返回键所对应的值,如果不存在则返回null

clear()

移除Map中的所有键值对,或者说就是清空集合

isEmpty()

查看Map中是否存在键值对

size()

查看集合中包含键值对的个数,返回int类型

         因为Map中的键必须是唯一的,所以虽然键可以是null,只能由一个键是null,而Map中的值可没有这种限制,值为null的情况经常出现, 因此get(Object key)方法返回null,有两种情况一种是确实不存在该键值对,二是该键对应的值对象为null。为了确保某Map中确实有某个键,应该使用的方法是 containsKey(Object key) 。

1.Map接口

        Map关心的是唯一的标识符。他将唯一的键映射到某个元素。当然键和值都是对象。

        HashMap 当需要键值对表示,又不关心顺序时可采用HashMap

        Hashtable 注意Hashtable中的t是小写的,它是HashMap的线程安全版本,现在已经很少使用。

        LinkedHashMap 当需要键值对,并且关心插入顺序时可采用它。

        TreeMap 当需要键值对,并关心元素的自然排序时可采用它。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
掌握集合的概念、体系结构、分类及使用场景 2)了解Set接口及主要实现类(HashSet、TreeSet) 3)了解List接口及主要实现类(ArrayList、LinkedList、Vector) 4)了解Map接口及主要实现类(HashMap、TreeMap、HashTable) 二、实验内容及步骤 1、编写程序练习将以下5个Person类的对象放在一个HashSet中。 姓名:张三 身份证号:178880001 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880003 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880004 注意:因为Person类是自定义类,需要重写hashCode()方法和equals()方法,并规定只有姓名和身份证号都相等,则对象相等。 其中计算哈希码的算法:(31 + ((name == null) ? 0 : name.hashCode()))*31 + id (注:name:Person对象的姓名,id:Person对象的身份证号) 主方法中作如下测试: 1)创建一个可放置Person类对象的HashSet; 2)依次添加上述5个对象到HashSet中; 3)把集合中的元素打印出来(使用迭代器Iterator) 2、编写程序练习List集合的基本使用: 1) 创建一个只能容纳String对象名为names的ArrayList集合; 2)按顺序往集合中添加5个字符串对象:"张三"、"李四"、"王五"、"马六"、"赵七"; 3)对集合进行遍历,分别打印集合中的每个元素的位置与内容; 4)打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。 3、编写程序练习Map集合的基本使用: 1)创建一个只能容纳String对象的person的HashMap集合; 2)往集合中添加5个"键-值"对象: "id"-"1"; "name"-"张三"; "sex"-"男"; "age"-"25"; "hobby"-"爱学Java" 3)对集合进行遍历,分别打印集合中的每个元素的键与值; 4)打印集合的大小,然后删除集合中的键为age的元素,并显示删除元素的内容,并再次打印集合的大小。 四、思考题 1、集合中的List、Set、Map有哪些不同? 2、为什么使用集合框架,而尽可能少用数组作为存储结构? 3、如何使用TreeSet实现第一题?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值