• Java中集合的概述


    一、集合和数组的区别

      1、数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。

      2、集合只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。

    二、Java中集合框架图解与说明

      

      1、Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是Set和List。Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。常用方法如下:

    add(E e) 将指定对象添加到集合中
    remove(Object o) 将指定的对象从集合中移除,移除成功返回true,不成功返回false
    contains(Object o) 查看该集合中是否包含指定的对象,包含返回true,不包含返回flase
    size() 返回集合中存放的对象的个数。返回值为int
    clear() 移除该集合中的所有对象,清空该集合。
    iterator() 返回一个包含所有对象的iterator对象,用来循环遍历
    toArray() 返回一个包含所有对象的数组,类型是Object
    toArray(T[] t) 返回一个包含所有对象的指定类型的数组

      2、Map是Java.util包中的另一个接口,它和Collection接口没有关系,是相互独立的,但是都属于集合类的一部分。Map包含了key-value对。Map不能包含重复的key,但是可以包含相同的value。

      3、Iterator,所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含以下三种方法:
        (1)hasNext()是否还有下一个元素。
        (2)next()返回下一个元素。
        (3)remove()删除当前元素。

    三、Java中几个比较常用的接口和类简介

      1、List接口

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

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

        LinkedList 中的元素之间是双链接的,当需要快速插入和删除时LinkedList成为List中的不二选择。

        Vector 是ArrayList的线程安全版本,性能比ArrayList要低,现在已经很少使用

      2、Set接口

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

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

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

        TreeSet 当不希望集合中有重复值,并且希望按照元素的自然顺序进行排序时可以采用此类。(自然顺序意思是某种和插入顺序无关,而是和元素本身的内容和特质有关的排序方式,譬如“abc”排在“abd”前面。)

      3、Queue接口

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

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

        PriorityQueue 用来创建自然排序的优先级队列。这是一篇详细讲解的博客网址:    http://blog.csdn.net/u011116672/article/details/50997622感兴趣可以看一下。

      4、Map接口

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

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

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

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

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

        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) 。

    记录技术相关文章
  • 相关阅读:
    SaaS模式应用之多租户系统开发(单数据库多Schema设计)
    web-api POST body object always null
    linq to js 用法
    c#导出数据到csv文本文档中,数据前面的0不见了解决方法
    金蝶BOS元模型分析
    DotNet 资源大全中文版
    JavaScript中的类方法、对象方法、原型方法
    解决System.Data.SqlClient.SqlException (0x80131904): Timeout 时间已到的问题
    在需要隐藏navigationController控制器
    升级macOS Sierra系统 导致错误 app: resource fork, Finder information, or similar detritus not allowed
  • 原文地址:https://www.cnblogs.com/shaoshuai95928/p/shaoshuai928.html
Copyright © 2020-2023  润新知