Java集合框架详细总结 (5)

Java集合框架详细总结

3.4泛型的通配符

当使用泛型类或接口时,传递数据中,泛型类型不确定,可以通过通配符表示<?>表示。但一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。

通配符的基本使用

泛型的通配符:不知道使用什么类型来接收的时候,此时可以使用 ? ,?表示未知通配符

此时只能接收数据,不能往集合中存储数据。

【参考代码】

 package FanXing;
 
 import javax.swing.text.html.HTMLDocument;
 import java.util.ArrayList;
 import java.util.Iterator;
 /*
     泛型的通配符:
         ?:代表数据类型
     使用方式:
         不能在创建对象时使用
         只能作为方法的传递参数使用
  */
 public class Generic {
     public static void main(String[] args) {
 
         ArrayList<Integer>list01 = new ArrayList<>();
         list01.add(123);
         list01.add(456);
 
         ArrayList<String>list02 = new ArrayList<>();
         list02.add("小明");
         list02.add("小红");
 // ......还有很多其它类型
         printArray(list01);
         printArray(list02);
         /*
             定义一个方法,能遍历所有类型的ArrayList集合
             这时候我们不知道ArrayList集合使用的是什么类型,可以使用泛型的通配符:?来代表数据类型
             注意:泛型没有继承的概念
          */
    }
 
     public static void printArray(ArrayList<?>list){
         // 使用迭代器遍历集合
        Iterator<?> it = list.iterator();
        while(it.hasNext()){
            Object obj = it.next();//it.next()取出的元素是Object类。Object类 可以接收任意的数据类型
            System.out.println(obj);
        }
 
    }
 }
通配符高级使用-----受限泛型

之前设置泛型的时候,实际上是可以可以任意设置的,只要是类就可以设置。但在Java的泛型中可以指定一个泛型的上限和下限。

泛型的上限:

格式:类型名称<? extends E >对象名称 代表的泛型只能是E类型的子类/本身

意义:只能接收该类型及其子集

泛型的下限:

格式:类型名称<? super E >对象名称 代表的泛型只能是E类型的父类/本身

意义:只能接收该类型及其父类

比如:Object类、String类、Number类、Integer类,其中Number类是Integer的父类。

四:Java常见数据结构

集合是基于数据结构做出来的,不同的集合底层采用不同的数据结构。不同的数据结构,功能和作用是不一样的。

数据结构是指数据以什么方式组织在一起。不同的数据结构,增删查的性能是不一样的。

41栈

栈:stack,又称堆栈,它是运算受限的线性表,只能在栈的受限一端进行插入和删除操作。

特点:先进后出

4.2队列

队列:queue,简称队,它同栈由于也是运算受限的线性表,只能在表的一端进行插入操作,而在表的另一端进行删除操作。

特点:先进先出

4.3数组

数组:Array,是个有序的元素序列,数组在内存中开辟一段连续的空间。

特点:

查询快:随机存取,通过索引可以快速访问元素

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysxpf.html