首页 > 其他分享 >集合泛型

集合泛型

时间:2024-08-06 10:30:22浏览次数:13  
标签:Java List list 集合 类型 泛型

集合泛型


在Java中,泛型(Generics)是一种强大的特性,它允许程序员在编译时进行类型安全检查。当泛型应用于集合时,可以确保集合中只能存储指定类型的元素,从而避免了类型转换的错误和运行时异常。

泛型的基本使用

泛型在使用时通常遵循以下格式:

GenericClass<Type> object = new GenericClass<>();

这里的 Type 是一个类型参数,它可以是任何有效的Java类型,包括类(class)、接口(interface)、基本数据类型(int, double 等)。

集合中的泛型

在集合框架中,泛型允许你指定集合中元素的类型。例如,你可以创建一个存储 String 类型元素的 ListSet

List<String> stringList = new ArrayList<>();
Set<Integer> integerSet = new HashSet<>();

泛型方法

Java中的集合类也提供了泛型方法,这些方法可以操作泛型类型的参数和返回值。例如,Collections.sort() 方法可以对泛型类型的列表进行排序:

List<String> strings = Arrays.asList("banana", "apple", "cherry");
Collections.sort(strings); // strings 是一个泛型列表

通配符

Java泛型还支持使用通配符(?),这允许你创建可以操作多种类型的集合。通配符的使用场景包括:

  • 无限制通配符List<?> 表示可以包含任何类型的列表。
  • 上界限定List<? extends Number> 表示可以包含 Number 类型或其子类型的列表。
  • 下界限定List<? super String> 表示可以包含 String 类型或其父类型的列表。

泛型接口和类

集合框架中的泛型接口和类,如 ListSetMap 等,都使用泛型来定义元素的类型。例如:

Map<String, List<String>> map = new HashMap<>();
map.put("fruits", Arrays.asList("apple", "banana"));

泛型的类型擦除

Java泛型在编译时提供类型安全,但在运行时,类型信息会被擦除。这意味着在运行时,你不能通过反射来获取泛型的确切类型。例如:

List<String> list = new ArrayList<>();
list.add("hello");
String s = list.get(0); // 直接使用,无需类型转换

// 运行时,list的类型参数被擦除
System.out.println(list.getClass() == ArrayList.class); // true
System.out.println(list.getClass() == ArrayList<String>.class); // false

标签:Java,List,list,集合,类型,泛型
From: https://www.cnblogs.com/dengyingyuan/p/18344655

相关文章

  • 集合工具类
    集合工具类集合工具类在Java中主要指的是java.util.Collections和java.util.Arrays,以及java.util.stream.Collectors(Java8及以上版本)。以下是对这些工具类的简要说明:1.java.util.CollectionsCollections类提供了一系列静态方法来操作或返回集合对象,包括:排序:sort(),sort(......
  • 集合框架类结构图
    集合框架类结构图集合接口(Collection)Collection:是所有集合的根接口,提供操作集合的基本方法,如add、remove、contains、size、isEmpty等。子接口List:一个有序的集合,可以包含重复的元素。ArrayList:基于动态数组实现,支持快速随机访问。LinkedList:基于链表实现,适合进行频......
  • 集合遍历
    集合遍历集合遍历是指访问集合中的每个元素,并对它们进行迭代处理的过程。Java集合框架提供了几种遍历集合的方法。以下是一些常见的遍历技术:使用for循环对于数组或List,可以使用传统的for循环进行遍历:List<String>list=Arrays.asList("Apple","Banana","Cherry");f......
  • 集合
    我们来简单解读下上面这个框架图:所有集合类都位于java.util包下Iterator是遍历集合的工具,我们经常通过Iterator迭代器来遍历集合。我们说Collection依赖于Iterator,是因为Collection的实现类都要实现iterator()函数,返回一个Iterator对象。ListIterator主要作用就是遍历List。Ja......
  • java9-泛型
    1.泛型的简介1.1什么是泛型        泛型是一种特殊的数据类型。它是Java的一个高级特性。在Mybatis、Hibernate这种持久化框架,泛型更是无处不在。在这之前,不管我们在定义成员变量时,还是方法的形参时,都要规定他们的具体类型。所以提出猜想,有没有一种可能,一次声......
  • 【日常开发】一个list集合 根据a字段 b字段进行分组 并计算c字段的和 并封装这种格式:
    ......
  • 【Java基础知识3】泛型
    一、泛型的意义泛型的本质是将类型参数化,从而达到代码复用。即:在不创建新的类型下,通过泛型指定不同类型来控制形参具体类型,简单来讲就是,当我们不知道用什么数据类型接收数据的情况下,可以使用泛型来接收。代码示例:未使用泛型情况下:privatestaticintadd(inta,intb){......
  • c#:泛型
    泛型允许你定义一个类、接口或方法时不指定具体的数据类型,而是使用一个或多个类型参数类型安全:编译器在编译时检查类型,减少运行时错误。代码重用:相同的代码可以处理不同的数据类型,避免重复代码。性能:避免了装箱和拆箱的性能损失,尤其是在处理值类型时。点击查看代码usingS......
  • 47 集合操作与运算
    1增加与删除集合元素集合对象的add()方法可以增加新元素,如果该元素已存在则忽略该操作,不会抛出异常;update()方法合并另外一个集合中的元素到当前集合中,并自动去除重复元素。s={1,2,3}print(s)s.add(3)#增加元素,重复元素自动忽略s.update({3,4,5})#更新......
  • SmolLM: 一个超快速、超高性能的小模型集合
    简介本文将介绍SmolLM。它集合了一系列最尖端的135M、360M、1.7B参数量的小模型,这些模型均在一个全新的高质量数据集上训练。本文将介绍数据整理、模型评测、使用方法等相关过程。引言近期,人们对能在本地设备上运行的小语言模型的兴趣日渐增长。这一趋势不仅激发了相关业者......