泛型是从Java 1.5就开始提供了的,那么下面的文章内容,就要重点的来给大家讲解一下java泛型,主要就是要介绍泛型集合方面的内容。
泛型能够在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。
泛型本质上是提供类型的“类型参数”,也就是参数化类型。
我们可以为类、接口或方法指定一个类型参数,通过这个参数限制操作的数据类型,从而保证类型转换的绝对安全。
泛型集合
来看一下下面的示例:
下面的话就结合泛型和集合来编写一个案例实现图书信息输出。
先要创建一个表示图书的实体类Book,在这当中包括了图书信息有图书编号、图书名称和价格。
下面的话是Book类的具体代码:
public class Book { private int Id; // 图书编号 private String Name; // 图书名称 private int Price; // 图书价格 public Book(int id, String name, int price) { // 构造方法 this.Id = id; this.Name = name; this.Price = price; } public String toString() { // 重写 toString()方法 return this.Id + ", " + this.Name + "," + this.Price; } }
使用Book作为类型创建Map和List两个泛型集合,之后,向集合中添加图书元素,最后输出集合中的内容。
代码:
public class Test14 { public static void main(String[] args) { // 创建3个Book对象 Book book1 = new Book(1, "唐诗三百首", 8); Book book2 = new Book(2, "小星星", 12); Book book3 = new Book(3, "成语大全", 22); Map < Integer, Book > books = new HashMap < Integer, Book > (); // 定义泛型 Map 集合 books.put(1001, book1); // 将第一个 Book 对象存储到 Map 中 books.put(1002, book2); // 将第二个 Book 对象存储到 Map 中 books.put(1003, book3); // 将第三个 Book 对象存储到 Map 中 System.out.println("泛型Map存储的图书信息如下:"); for (Integer id: books.keySet()) { // 遍历键 System.out.print(id + "——"); System.out.println(books.get(id)); // 不需要类型转换 } List < Book > bookList = new ArrayList < Book > (); // 定义泛型的 List 集合 bookList.add(book1); bookList.add(book2); bookList.add(book3); System.out.println("泛型List存储的图书信息如下:"); for (int i = 0; i < bookList.size(); i++) { System.out.println(bookList.get(i)); // 这里不需要类型转换 } } }
在这个示例当中,第7行代码创建了一个键类型为Integer、值类型为Book的泛型集合,也就是指明了这个Map集合当中存放的键必须是Integer类型、值必须是Book类型,否则的话编译出错。
在获取Map集合房中的元素的时候,不需要将获取的值强制转换为Book类型,程序会隐式转换。
在创建List集合的时候,同样使用了泛型,所以的话,在获取集合中的元素的时候,也不需要将代码强制转换为Book类型,程序会隐式转换。
执行结果:
泛型Map存储的图书信息如下: 1001——1, 唐诗三百首,8 1003——3, 成语大全,22 1002——2, 小星星,12 泛型List存储的图书信息如下: 1, 唐诗三百首,8 2, 小星星,12 3, 成语大全,22
对于泛型集合的简单介绍就到这里啦,更多相关常见问题,请继续关注奇Q工具网来进行了解吧。
推荐阅读: