【Java】容器API——问题式剖析

本文深入介绍了Java容器API的概念及其组成部分,包括API的定义与作用、Java容器的基本特性,并详细解析了List、Set与Map三种核心容器的特点及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:


          Java容器API,这5个字/字母,刚看到我是一愣,拆分开来:“Java容器”是什么?“API”又是什么?“容器API”是容器和API两个的结合吗?  想知道这个问题,那就先来了解下什么是API,什么是容器吧。   


正文:



        API:(Application Programming Interface,应用程序编程接口)


        说到API,这个理解是目前为止最能说服我的一个解释:API的主要目的是提供给应用程序与开发人员能访问一组某个系统对外提供的功能接口或服务集合的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。API是一种接口,故而是一种抽象。


     容器


         说到容器顾名思义应该就存放东西,在学Java以前,一说到存放东西,第一个想到的就是数组,使用数组,在存取方面确实也很方便,存储效率高访问快,但它也受到了一些限制,比如说数组的长度以及数组的类型。当我需要一组string类型数据的同时还需要Integer类型的话,就需要定义两次,同时,数组的长度也受到限制,即使是动态定义数组长度,但长度依然需要固定在某一个范围,不方便也不灵活,  那么如果我想解决上面这个限制和不方便该怎么办呢?这次接触Java,java容器是否提供了相应的解决办法呢?



    Java容器:


            答案是肯定的,就是Java容器提供了解决上述问题的办法。Java容器存放的是Java容器API所提供的一系列类实例,类的实例不就是对象吗?也就是Java容器用于在程序中存放对象,主要位于Java.Util包中,其长度不受限制,类型不受限制,你在存放String类型的时候依然能够存放Integer类型的,两者不会冲突


    Java容器的分类

       

       


    List


            List是有序且可重复的,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引来访问List中的元素,这类似于Java的数组。

 

            List示意图:

          

              List集合非常像一个数组,它可以记住每次添加元素的顺序,List长度可变。所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对;所有List中可以有相同的元素;可以有Null元素;基于ArrayList适合查询,LinkedList适合添加、删除操作。

 

   Set


          Set是一种不包含重复的元素的无序CollectionSet实现的基础是Map,如果使用addObject obj)方法添加已经存在的对象,则会覆盖前面的对象。

 

    Set示意图:

       

     Set 集合类似于一个罐子,把一个对象添加到Set集合时,Set集合无法记住添加这个元素的顺序,所以Set里的元素不能重复否则系统无法准确识别这个元素

 

       虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储项。因为HashMap的key具有唯一性,所以Set里面存储的数据不能重复

 

    Map

    

          Map作为一种键值对的形式进行关联的容器。一个键可以与多个键值对应,但是一个键值必须对应一个键,这样就形成了多级映射。对于键来说,像Set一样,一个Map容器中的键不允许重复,为了保持查找结果的一致性。在使用的过程中,只要保持最后一次修改的值与键对应。对于键的要求具有唯一性。

 

    Map示意图:

           


    如何使用?

[java]  view plain  copy
  1. <span style="font-family:Verdana;font-size:18px;">import java.util.*;  
  2. public class TestCollection{  
  3.      public static void main(String[] args){  
  4.           //父类引用指向子类对象,可以实现不同类型的对象  
  5.           Collection c = new ArrayList();  
  6.           c.add("hello");  
  7.           c.add(new Name("f1","l1"));  
  8.           c.add(new Integer(100));  
  9.           System.out.println(c.size());  
  10.           System.out.println(c);  
  11.      }  
  12. }  
  13. </span>  


总结

     Set中的数据对象没有顺序且不可重复;List中的数据对象有顺序且可重复。重复的意思是这两个对象互相equals若相等就是重复。Map存储键值对,必须保证键的唯一性。






评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值