java泛型,泛型集合详解

KLQ 2020-08-27 10:35:04 java常见问答 7365

泛型是从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集合房中的元素的时候,不需要将books.get(id);获取的值强制转换为Book类型,程序会隐式转换。

在创建List集合的时候,同样使用了泛型,所以的话,在获取集合中的元素的时候,也不需要将bookList.get(i)代码强制转换为Book类型,程序会隐式转换。

执行结果:

泛型Map存储的图书信息如下:
1001——1, 唐诗三百首,8
1003——3, 成语大全,22
1002——2, 小星星,12
泛型List存储的图书信息如下:
1, 唐诗三百首,8
2, 小星星,12
3, 成语大全,22

对于泛型集合的简单介绍就到这里啦,更多相关常见问题,请继续关注奇Q工具网来进行了解吧。

推荐阅读:

java集合详解

java中遍历set集合,java中set怎么遍历?

java List集合,ArrayList类用法详解