Java 非泛型与泛型集合
我们将在后面讨论两者的区别,首先让我们了解什么是泛型集合和非泛型集合,最重要的是处理好实现部分,因为在实现过程中,人们才能真正理解这个概念,因此,它们之间的区别。
泛型基本上是在编译时比在运行时出现的错误。泛型比非泛型有以下一些优点。
- 代码重用: 在泛型的帮助下,人们只需要写一次方法/类/接口,并将其用于任何类型,而在非泛型中,只要需要,就需要反复写代码。
- 类型安全: 泛型使错误在编译时出现,而不是在运行时出现(与其让你的代码在运行时失败,不如在编译时知道代码中的问题)。
例子: 创建一个存储学生姓名的ArrayList,如果程序员错误地添加了一个整数对象而不是字符串,编译器会允许它。但是,当这个数据从ArrayList中被检索时,对于非通用ArrayList来说,在运行时就会出现问题。
实现 。
例子1
输出
泛型是如何解决这个问题 的?
如果这个列表是泛型的,那么它将只接受字符串对象,而在其他情况下会抛出编译错误。
例子2
输出
现在继续前进, 不需要单独的类型转换 。
如果不需要泛型,那么,在上面的例子中,每次从ArrayList中检索数据时,都需要进行类型转换。每次检索操作都要进行类型转换,这是一个很令人头痛的问题。如果已经知道列表中只有字符串数据,就可以避免这种情况。
例三
输出
Geek , 现在你应该想知道泛型是如何解决这个问题 的?
如果这个列表是泛型的,那么它将只接受字符串对象,并且在检索时只返回字符串对象。因此就不需要单独的类型化。上面的说法是合理的
例四
输出
注意
在泛型的帮助下,人们可以实现算法 实现泛型算法,人们可以让它 在不同类型的对象上工作,同时它们也是类型安全的。
请记住,有一些要点将描述泛型和非泛型之间的区别,这些要点在下面的表格中列出,以便对它们有一个清晰的了解。
基础 | 非泛型集合 | 泛型集合 |
---|---|---|
语法 | ArrayList list = new ArrayList(); | ArrayList |
类型安全 | 可以容纳任何类型的数据。因此不是类型安全的。 | 只能容纳定义的数据类型。因此是类型安全的。 |
类型转换 | 每次检索时都需要进行单独的类型转换。 | 不需要类型转换。 |
编译时检查 | 在运行时检查类型安全。 | 在编译时检查类型安全。 |