搜索
首页Javajava教程Java集合框架的数据结构是什么

    1、什么是集合框架?

    在java中,有一套现成的数据结构,例如顺序表,链表,队列,栈,优先级队列,哈希表等,被封装成了相应的接口/类,供程序员直接使用,只需要创建相关的对象即可以使用,而不需要再实现其内部结构。

    集合是一种存储和管理多个元素的数据结构,其中这些元素被置于单个单元中,可通过增加、删除、修改和查询等操作进行处理。举例来说,像一幅扑克牌(一组牌的集合)、一个通讯录(一组姓名和电话的映射关系)等都可以作为例子。

    下图很重要!!!需要牢记其常用的接口和类!!

    Java集合框架的数据结构是什么

    Java集合框架的数据结构是什么

    因为map接口没有实现Iterable接口,那么要遍历其中的元素该怎么实现呢?

    		Map<Integer,String> map = new HashMap();
            map.put(1,"jack");
            map.put(2,"tom");
            Set<Map.Entry<Integer, String>> entries = map.entrySet();
            // 使用迭代器进行遍历 ,增强 for同理
            Iterator<Map.Entry<Integer, String>> iterator = entries.iterator();
            while (iterator.hasNext()) {
                Map.Entry<Integer, String> entry =  iterator.next();
                System.out.println(entry.getKey() + " " + entry.getValue());
            }

    上述以HashMap为例,可以调用其 entrySet() 方法,将map里面的每个a421e0d14d9d8536ca830fe68f24c180键值对 都封装成一个Map.Entry754751e56704d0427ba7371efce67d95对象,因为用Set接口接收,所以就可以使用迭代器 或者 for-each()进行遍历了,并且每个entry对象都有getKey() 和 getValue() 方法,分别获取key值和value值。

    基本关系(简易版)

    Java集合框架的数据结构是什么

    2、Collection接口

    一般是用实现了Collection接口的接口或者类来接受具体实现类的对象,因为上图可以看出,Collection接口是一系列接口和类的父接口,其内部实现的方法比较少,所以不能调用一些子类有的常见方法。

    1.通过泛型来指定相应集合中的对象类型

    注意:这里传入的类型只能是引用类型,如果是基本数据类型,应该用其包装类来指定

    		Collection<String> collection1 = new ArrayList();
            collection1.add("haha");
            collection1.add("world");
            Collection<Integer> collection2 = new ArrayList();
            collection2.add(1);
            collection2.add(2);
            //collection2.add("hh");// 这里会报错,不符合传入的指定类型Integer

    2.Collection常见方法使用

    方法 作用
    void clear() 删除集合中的所有元素
    boolean isEmpty() 判断集合是否没有任何元素,俗称空集合
    boolean remove(Object e) 如果元素 e 出现在集合中,删除其中一个
    boolean add(E e) 将元素 e 放入集合中
    int size() 返回集合中的元素个数
    Object[] toArray() 返回一个装有所有集合中元素的数组

    注意:在最后一个Object[] toArray() 方法中,返回的是Object[] 类型的数组,底层的做法是:将集合中的元素一个一个拿出来,将其转为 Object 对象,存入要返回的数组中,最终返回一个 Object[] 类型的数组。转换为 String[] 数组时会引发类型转换异常。

    Java集合框架的数据结构是什么

    因为这里不能保证数组中的每个元素都转成了String,而只是将其整体强转为了String[] 类型的数组,所以如果非要转,需要先遍历返回的结果,将其一个一个转为String类型,最后赋给一个String[] 类型的数组。java里不建议整体对数组类型进行转换。

    		Object[] objects = collection1.toArray();
            String[] strings = new String[objects.length];
            for (int i = 0; i < objects.length; i++) {
                strings[i] = (String)objects[i];// 一个一个转,但是没啥必要
            }

    3、Map 接口

    通过4d99c7247b7b3576808f15146ae26097键值对的形式来存储数据,此处的 key 值唯一,且每个 key 值都可以对应其相应的 value 值。不同的 key 值可以对应相同的 value 。HashMap: 在存放元素时,根据其key值,调用内部的hashCode函数,找到元素该放入的位置,所以哈希表中元素不是按照存入的顺序存放的。

    Map常见方法使用

    方法 作用
    V get(Object k) 根据指定k查找对应v
    V getOrDefault(Object k, V defaultValue) 根据指定的 k 查找对应的 v,没有找到则返回默认值
    V put(K key, V value) 将指定的 k-v 放入 Map
    boolean containsKey(Object key) 判断是否包含 key
    boolean containsValue(Object value) 判断是否包含 value
    Set07a35e8ecc27b90752618af40fd251ac> entrySet() 将所有键值对返回
    boolean isEmpty() 判断是否为空
    int size() 返回键值对的数量
    		HashMap<Integer, String> map = new HashMap<>();
    
            // put()
            map.put(1,"张飞");// 这里的 key 值唯一
            map.put(1,"宋江");// 如果二次插入的 key 值之前有,则替换其 value值
            map.put(2,"Jack");
            System.out.println(map);
    
            // get()
            String s1 = map.get(1);// 返回 宋江
            String s3 = map.getOrDefault(3,"三团");// 未找到,返回 三团
    
            // entrySet()
            // 该方法返回一个 Set<Map.Entry<Integer, String>> 对象
            Set<Map.Entry<Integer, String>> entries = map.entrySet();
            for (Map.Entry<Integer, String> entry : entries) {
                // 通过 entry.getKey() 和 entry.getValue() 获取每个entry对应的 k, v值
                System.out.println(entry.getKey() + " " + entry.getValue());
            }

    Java集合框架的数据结构是什么

    4、具体的实现类

    Java集合框架的数据结构是什么

    以上是Java集合框架的数据结构是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

    声明
    本文转载于:亿速云。如有侵权,请联系admin@php.cn删除
    Java平台独立性:与不同的操作系统的兼容性Java平台独立性:与不同的操作系统的兼容性May 13, 2025 am 12:11 AM

    JavaachievesPlatFormIndependencethroughTheJavavIrtualMachine(JVM),允许Codetorunondifferentoperatingsystemsswithoutmodification.thejvmcompilesjavacodeintoplatform-interploplatform-interpectentbybyteentbytybyteentbybytecode,whatittheninternterninterpretsandectectececutesoneonthepecificos,atrafficteyos,Afferctinginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginging

    什么功能使Java仍然强大什么功能使Java仍然强大May 13, 2025 am 12:05 AM

    JavaispoperfulduetoitsplatFormitiondence,对象与偏见,RichstandardLibrary,PerformanceCapabilities和StrongsecurityFeatures.1)Platform-dimplighandependectionceallowsenceallowsenceallowsenceallowsencationSapplicationStornanyDevicesupportingJava.2)

    顶级Java功能:开发人员的综合指南顶级Java功能:开发人员的综合指南May 13, 2025 am 12:04 AM

    Java的顶级功能包括:1)面向对象编程,支持多态性,提升代码的灵活性和可维护性;2)异常处理机制,通过try-catch-finally块提高代码的鲁棒性;3)垃圾回收,简化内存管理;4)泛型,增强类型安全性;5)ambda表达式和函数式编程,使代码更简洁和表达性强;6)丰富的标准库,提供优化过的数据结构和算法。

    Java真的平台独立吗? '写一次,在任何地方运行”如何起作用Java真的平台独立吗? '写一次,在任何地方运行”如何起作用May 13, 2025 am 12:03 AM

    javaisnotirelyPlatemententduetojvmvariationsandnativecodinteintration,butitlargelyupholdsitsitsworapromise.1)javacompilestobytecoderunbythejvm

    揭示JVM:您了解Java执行的关键揭示JVM:您了解Java执行的关键May 13, 2025 am 12:02 AM

    thejavavirtualmachine(JVM)IsanabtractComputingmachinecrucialforjavaexecutionasitrunsjavabytecode,使“ writeononce,runanywhere”能力

    Java仍然是基于新功能的好语言吗?Java仍然是基于新功能的好语言吗?May 12, 2025 am 12:12 AM

    Javaremainsagoodlanguageduetoitscontinuousevolutionandrobustecosystem.1)Lambdaexpressionsenhancecodereadabilityandenablefunctionalprogramming.2)Streamsallowforefficientdataprocessing,particularlywithlargedatasets.3)ThemodularsystemintroducedinJava9im

    是什么使Java很棒?关键特征和好处是什么使Java很棒?关键特征和好处May 12, 2025 am 12:11 AM

    Javaisgreatduetoitsplatformindependence,robustOOPsupport,extensivelibraries,andstrongcommunity.1)PlatformindependenceviaJVMallowscodetorunonvariousplatforms.2)OOPfeatureslikeencapsulation,inheritance,andpolymorphismenablemodularandscalablecode.3)Rich

    前5个Java功能:示例和解释前5个Java功能:示例和解释May 12, 2025 am 12:09 AM

    Java的五大特色是多态性、Lambda表达式、StreamsAPI、泛型和异常处理。1.多态性让不同类的对象可以作为共同基类的对象使用。2.Lambda表达式使代码更简洁,特别适合处理集合和流。3.StreamsAPI高效处理大数据集,支持声明式操作。4.泛型提供类型安全和重用性,编译时捕获类型错误。5.异常处理帮助优雅处理错误,编写可靠软件。

    See all articles

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    Video Face Swap

    Video Face Swap

    使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

    热门文章

    热工具

    SecLists

    SecLists

    SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    Atom编辑器mac版下载

    Atom编辑器mac版下载

    最流行的的开源编辑器

    Dreamweaver Mac版

    Dreamweaver Mac版

    视觉化网页开发工具