首页 > 其他分享 >容器一(泛型、Collection 接口)

容器一(泛型、Collection 接口)

时间:2024-03-28 12:33:11浏览次数:27  
标签:容器 Object 接口 boolean Collection 泛型

目录

泛型 Generics

自定义泛型

容器中使用泛型

Collection 接口


泛型 Generics

        泛型是 JDK1.5 以后增加的,它可以帮助我们建立类型安全的集合。在使用了泛型的集 合中,遍历时不必进行强制类型转换。JDK 提供了支持泛型的编译器,将运行时的类型检 查提前到了编译时执行,提高了代码可读性和安全性。

        泛型的本质就是“数据类型的参数化”。 我们可以把“泛型”理解为数据类型的一个占位 符(形式参数),即告诉编译器,在调用泛型时必须传入实际类型。

自定义泛型

        可以在类的声明处增加泛型列表,如<T,E,V>:。 此处,字符可以是任何标识符, 一般采用这 3 个字母。

泛型的声明:

class MyCollection<E> {// E:表示泛型;
    Object[ ] objs = new Object[5];
    public E get(int index) {// E:表示泛型;
        return (E) objs[index];
    }
    public void set(E e, int index) {// E:表示泛型;
        objs[index] = e;
    }
}

        泛型 E 像一个占位符一样表示“未知的某个数据类型”,我们在真正调用的时候传入这个 “数据类型”。

泛型的应用:

public class TestGenerics {
    public static void main(String[ ] args) {
        // 这里的”String”就是实际传入的数据类型;
        MyCollection<String> mc = new MyCollection<String>();
        mc.set("aaa", 0);
        mc.set("bbb", 1);
        String str = mc.get(1); //加了泛型,直接返回String类型,不用强制转换;
        System.out.println(str);
    }
}

容器中使用泛型

        容器相关类都定义了泛型,我们在开发和工作中,在使用容器类时都要使用泛型。这样, 在容器的存储数据、读取数据时都避免了大量的类型判断,非常便捷。

泛型在集合中的使用:

import java.util.*;

public class TestGenerics {
    public static void main(String[ ] args) {
        // 以下代码中List、Set、Map、Iterator都是与容器相关的接口;
        List<String> list = new ArrayList<String>();
        Set<Map> Maps = new HashSet<Map>();
        Map<Integer, Map> maps = new HashMap<Integer, Map>();
        Iterator<Map> iterator = Maps.iterator();
    }
}

        通过阅读源码,我们发现 Collection、List、Set、Map、Iterator 接口都定义了泛型

所以,我们在使用这些接口及其实现类时,都要使用泛型。

只是强烈建议使用泛型。事实上,不使用编译器也不会报错

Collection 接口

        Collection 表示一组对象,它是集中、收集的意思。Collection 接口的两个子接口是 List、 Set 接口。

Collection 接口中定义的方法
方法说明
boolean add(Object element)增加元素到容器中
boolean remove(Object element)从容器中移除元素
boolean contains(Object element)容器中是否包含该元素
int size()容器中元素的数量
boolean isEmpty()容器是否为空
void clear()清空容器中所有元素
Iterator iterator()获得迭代器,用于遍历所有元素
boolean containsAll(Collection c)本容器是否包含 c 容器中的所有元素
boolean addAll(Collection c)将容器 c 中所有元素增加到本容器
boolean removeAll(Collection c)移除本容器和容器 c 中都包含的元素
boolean retainAll(Collection c)取本容器和容器 c 中都包含的元素,移除非交集元素
Object[ ] toArray()转化成 Object 数组

由于 List、Set 是 Collection 的子接口,意味着所有 List、Set 的实现类都有上面的方法。

标签:容器,Object,接口,boolean,Collection,泛型
From: https://blog.csdn.net/m0_48205251/article/details/136994098

相关文章

  • 如何从其他平台复制商品上传到自己店铺?官方授权接口,一键复制爆款同款
    很多做一件代发的卖家在上新时会从其他平台选品铺货,看到某个商品卖得不错,直接复制到自己店铺去卖,可以节省测款成本。现在平台严查无货源,直接从别人店铺搬运商品属于违规违规行为,想要复制这个爆款的话,就需要从1688选择同款货源进行铺货。①添加到上传列表中勾选商品,点击“添......
  • 股票行情数据API | 实时行情数据接口websocket接入方法
    今天给大家带来一个技术干货分享,如何通过接口API订阅并接入实时行情数据源报价,它的方法与步骤一、API地址及传参说明支持以下产品品类:美股、港股、A股、外汇、贵金属、商品、数字币github:https://github.com/alltick/realtime-forex-crypto-stock-tick-finance-websocket-a......
  • 泛型编程之模板
    1.函数模板重要行:template<typenameT,typenameT1>关键值class和typename含义相同,那么我们以后就使用typename即可。 一般情况下的格式:template<模板参数列表>返回值类型函数名(函数参数) 模板参数列表的理解:函数参数列表在运行时调用者用实参来初始化形参而......
  • 【C++】string类(常用接口)
     ......
  • 接口
    接口1.接口的意义解决java不能多继承问题,一个类只能有一个父类但是可以实现多个接口查看代码interfaceIFly{voidfly();}interfaceISwim{voidswim();}interfaceIRun{voidrun();}classAnimal{publicStringname;publicAnima......
  • redis+aop实现接口防刷(幂等)
    幂等和接口防刷概念这两者其实是属于不同的场景但是在一些情况下,实现方式上有异曲同工之妙。防刷顾名思义,想让某个接口某个人在某段时间内只能请求N次。一般是对一些不发人员用脚本对接口进行大量请求,或者说利用脚本进行秒杀。幂等幂等的数学概念幂等是源于一种数学概念......
  • RT路由器 serial 口ppp multilink 绑定接口配置
    配置MutlilinkPPP捆绑,编号为1interfacemultilink1                   ipadd192.168.100.1255.255.255.0   pppmultilink                                ......
  • 【Postman如何进行接口测试简单详细操作实例】
    1、下载Postmanpostman下载地址:DownloadPostman|GetStartedforFree2、安装Postman(1)双击下载好的postman-setup.exe文件,进行安装postman工具(2)安装完成后,在桌面找到并打开postman软件,输入邮箱和密码进行登录,没有就新建注册一个账号,登录进入到postman首页。3、大......
  • Xilinx ZYNQ 7000+Vivado2015.2系列(十)MIO/EMIO再识,MIO的引脚“复用”,EMIO当作PS的接口
    前面我们介绍过EMIO,但是不详细。MIO是PS的IO接口,这个M代表的是Multiuse,也就是多用途,在下图中我们可以看到54个MIO连接这么多东西,必须得复用,所以当我们开发的时候需要的功能配置上,不需要的去掉,防止IO口被占用。板子用的是zc702。下面我们双击ZYNQ核:我们到MIO的配置里,把其......
  • 消息sms 邮箱/手机号/push发送的方案 & 定时任务xxlJob灵活度 & 泛型和发送的模板类设
    消息sms邮箱/手机号/push发送的方案&定时任务xxlJob灵活度&泛型和发送的模板类设计1.消息sms邮箱/手机号/push发送的方案1.判断收件人地址是否为空,不为空则发送邮件。为空则不发送。可以通过该方法终止一些消息的发送。2.收件人的地址可以配置在Apollo中,直接删除该key......