热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java中集合的组成及特点

1:集合Collection(单列集合)List(有序,可重复)ArrayList底层数据结构是数组,查询快,增删慢线程不安全,效率高Vector底层数据结构是数组,查询快,增删慢

1:集合

    Collection(单列集合)

        List(有序,可重复)

            ArrayList 底层数据结构是数组,查询快,增删慢 线程不安全,效率高

            Vector 底层数据结构是数组,查询快,增删慢 线程安全,效率低

            LinkedList 底层数据结构是链表,查询慢,增删快 线程不安全,效率高

        Set(无序,唯一)

            HashSet 底层数据结构是哈希表 哈希表依赖两个方法:hashCode()和equals()

                执行顺序:

                    首先判断hashCode()值是否相同

                        是:继续执行equals(),看其返回值 是true:说明元素重复,不添加;是false:就直接添加到集合

                        否:就直接添加到集合

                最终:自动生成hashCode()和equals()即可

                LinkedHashSet 底层数据结构由链表和哈希表组成,由链表保证元素有序,由哈希表保证元素唯一。

            TreeSet 底层数据结构是红黑树。(是一种自平衡的二叉树)

                如何保证元素唯一性呢?根据比较的返回值是否是0来决定

                如何保证元素的排序呢?

                    自然排序(元素具备比较性) 让元素所属的类实现Comparable接口

                    比较器排序(集合具备比较性) 让集合接收一个Comparator的实现类对象

    Map(双列集合)

        Map集合的数据结构仅仅针对键有效,与值无关。存储的是键值对形式的元素,键唯一,值可重复。

        HashMap

            底层数据结构是哈希表。线程不安全,效率高,哈希表依赖两个方法:hashCode()和equals()

                执行顺序:

                    首先判断hashCode()值是否相同

                        是:继续执行equals(),看其返回值,是true:说明元素重复,不添加,是false:就直接添加到集合

                        否:就直接添加到集合

                最终:自动生成hashCode()和equals()即可

            LinkedHashMap 底层数据结构由链表和哈希表组成,由链表保证元素有序。由哈希表保证元素唯一。

        Hashtable

            底层数据结构是哈希表。线程安全,效率低,哈希表依赖两个方法:hashCode()和equals()

                执行顺序:

                    首先判断hashCode()值是否相同

                        是:继续执行equals(),看其返回值,是true:说明元素重复,不添加,是false:就直接添加到集合

                        否:就直接添加到集合

                最终:自动生成hashCode()和equals()即可

        TreeMap

            底层数据结构是红黑树。(是一种自平衡的二叉树)

                如何保证元素唯一性呢? 根据比较的返回值是否是0来决定

                如何保证元素的排序呢?

                        自然排序(元素具备比较性):让元素所属的类实现Comparable接口

                        比较器排序(集合具备比较性):让集合接收一个Comparator的实现类对象

    

2.关于集合选取原则

    是否是键值对象形式:

        是:Map

            键是否需要排序:

                是:TreeMap

                否:HashMap

            不知道,就使用HashMap。

            

        否:Collection

            元素是否唯一:

                是:Set

                    元素是否需要排序:

                        是:TreeSet

                        否:HashSet

                    不知道,就使用HashSet

                    

                否:List

                    要安全吗:

                        是:Vector

                        否:ArrayList或者LinkedList

                            增删多:LinkedList

                            查询多:ArrayList

                        不知道,就使用ArrayList

            不知道,就使用ArrayList

            

3:集合的常见方法及遍历方式

    Collection:

        add()

        remove()

        contains()

        iterator()

        size()

        

        遍历:

            增强for

            迭代器

            

        |--List

            get()

            

            遍历:

                普通for

        |--Set

    

    Map:

        put()

        remove()

        containskey(),containsValue()

        keySet()

        get()

        value()

        entrySet()

        size()

        

        遍历:

            根据键找值

            根据键值对对象分别找键和值

转:https://www.cnblogs.com/xyhero/p/9e5e094652ed1dce7a6f0abfcb3e4f3f.html



推荐阅读
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 本文全面解析了JavaScript中的DOM操作,并提供了详细的实践指南。DOM节点(Node)通常代表一个标签、文本或HTML属性,每个节点都具有一个nodeType属性,用于标识其类型。文章深入探讨了DOM节点的创建、查询、修改和删除等操作,结合实际案例,帮助读者更好地理解和掌握DOM编程技术。 ... [详细]
  • 本文深入解析了Java面向对象编程的核心概念及其应用,重点探讨了面向对象的三大特性:封装、继承和多态。封装确保了数据的安全性和代码的可维护性;继承支持代码的重用和扩展;多态则增强了程序的灵活性和可扩展性。通过具体示例,文章详细阐述了这些特性在实际开发中的应用和优势。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • Java学习第10天:深入理解Map接口及其应用 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 具备括号和分数功能的高级四则运算计算器
    本研究基于C语言开发了一款支持括号和分数运算的高级四则运算计算器。该计算器通过模拟手算过程,对每个运算符进行优先级标记,并按优先级从高到低依次执行计算。其中,加减运算的优先级最低,为0。此外,该计算器还支持复杂的分数运算,能够处理包含括号的表达式,提高了计算的准确性和灵活性。 ... [详细]
  • C# .NET 4.1 版本大型信息化系统集成平台中的主从表事务处理标准示例
    在C# .NET 4.1版本的大型信息化系统集成平台中,本文详细介绍了主从表事务处理的标准示例。通过确保所有操作要么全部成功,要么全部失败,实现主表和关联子表的同步插入。主表插入时会返回当前生成的主键,该主键随后用于子表插入时的关联。以下是一个示例代码片段,展示了如何在一个数据库事务中同时添加角色和相关用户。 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • 本文探讨了 Java 中 Pair 类的历史与现状。虽然 Java 标准库中没有内置的 Pair 类,但社区和第三方库提供了多种实现方式,如 Apache Commons 的 Pair 类和 JavaFX 的 javafx.util.Pair 类。这些实现为需要处理成对数据的开发者提供了便利。此外,文章还讨论了为何标准库未包含 Pair 类的原因,以及在现代 Java 开发中使用 Pair 类的最佳实践。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
author-avatar
呵呵哒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有