泛型-Collections工具类-Map双列集合复习

泛型

泛型的概述

 广泛的类型,在定义一个类的时候,类型有些方法参数,返回值类型不确定时,就使用一个符号,表示这些尚未确定的类型,就称为泛型。

泛型的好处

提高了数据的安全性,将运行时的问题提前暴露在了编译阶段。

避免了强转的麻烦

泛型

泛型类 泛型方法  泛型接口

说明

 类名后面跟着的泛型类型,是泛型的声明,一旦泛型声明出来,就相当于成为了已知类型,这个类型在整个类中都可以使用。

泛型的声明,只需要一个合法的标识符,常用字母:T E K V Q ..

泛型确定的时机:将来在使用这个类创建对象的时候。

泛型类实例一(自定义队列):

import java.util.LinkedList;

//自定义队列(使用泛型,自定异常)

public class Test01Generic {

public static void main(String[] args) throws Exception {

MyQueue<Integer> mq = new MyQueue<Integer>();

mq.in(12);

mq.in(44);

mq.in(9);

mq.out();

mq.out();

mq.out();

mq.out();

 

}

 

}

 

class MyQueue<E>{

private LinkedList<E> linkedList = new LinkedList<E>();

//必须声明一个链表对象,不然不知道指向哪里,因为要在堆内存中开辟空间存储元素

public void in(E e) {

linkedList.addLast(e);

}

public E out() throws Exception {

if(isEmpty()) {

throw new MyQueueEmptyException("队列空了哦亲");

}

return linkedList.removeFirst();

}

public boolean isEmpty() {

return linkedList.isEmpty();

}

}

 

class MyQueueEmptyException extends Exception{

public MyQueueEmptyException(String str) {

super(str);

}

}

泛型类实例二:

需求:模拟ArrayList定义MyArrayList 完成add、get和size方法

感觉这个题挺牛逼的,就是吧,一直在用ArrayList,感觉用着很棒,然后突然发现其实内部实现很简单,自己也可以写那种感觉

/*需求:模拟ArrayList定义MyArrayList 完成add、get和size方法*/

public class Test02Generic {

 

public static void main(String[] args) {

MyArrayList<Integer> list = new MyArrayList<Integer>();

list.add(123);

list.add(456);

list.add(789);

System.out.println(list.get(0));

System.out.println(list.size());

list.get(5);

 

}

 

}

 

class MyArrayList<E>{

//定义一个对象数组,存储元素

private Object[] objs;

private int size;//定义一个变量,存储数组的大小

public MyArrayList() {

//定义构造方法

//定义,在新建一个MyArrayList类时,默认开辟一个size为10的空间

objs = new Object[10];

}

public void add(E e) {

if(size >= objs.length) {

Object[] oldObjs = objs;

objs = new Object[objs.length+10];

}

objs[size] = e;

size++;

}

public int size() {

return size;

}

public E get(int index) {

if(index>=size) {

throw new RuntimeException("没那么多元素");

}

return (E)objs[index];

}

}

泛型通配符

使用泛型的时候,没有使用具体的泛型声明T,而是使用了和声明过的某个泛型T有关的一类类型,就称为泛型的通配符。三种形式:

第一种形式,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值