集合解析二

集合

1.Map接口
Map接口概述:
Map与Collection并列存在。用于保存具有映射关系的数据:key-value(双列数据)。
Map 中的 key 和 value 都可以是任何引用类型的数据。
Map 中的 key 用Set来存放,不允许重复,即同一个 Map 对象所对应的类,须重写hashCode()和equals()方法。
key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到唯一的、确定的 value。
Map接口的常用实现类:HashMap、Hashtable、TreeMap、LinkedHashMap和Properties。其中,HashMap是 Map 接口使用频率最高的实现类

2.Map接口:常用方法
添加、删除、修改操作:

Object put(Object key,Object value):将指定key-value添加到(或修改)当前map对象中
void putAll(Map m):将m中的所有key-value对存放到当前map中
Object remove(Object key):移除指定key的key-value对,并返回value.3泛型

3.泛型

java泛型是JDK1.5中引入的一个新特性,本质是参数化类型,把类型作为参数传递。

常见的形式由泛型类,泛型方法,泛型接口

好处:1.提高代码的重用性2.防止类型转换异常,提高代码的安全性3.规范类型

语法:<T…>T称为类型占位符,表示一种引用类型。

4.泛型的分类

1.泛型类

在类的后面加泛型,可以使用多个参数

package genericedemo;

/**
 * 定义的泛型类
 */
public class GenericeClass<E,T> {
    //属性
    private E e;
    private T t;

    public E getE() {
        return e;
    }

    public void setE(E e) {
        this.e = e;
    }

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }
}

package genericedemo;

public class TestGenericeClass {
    public static void main(String[] args) {
        //在使用泛型类的时候,需要确定类型
        GenericeClass<String,Integer> gc = new GenericeClass<>();
        gc.setE("hello"); //设置字符串类型
        System.out.println(gc.getE());//获取赋予字符串类型的值

        gc.setT(10); //设置整数类型的值
        System.out.println(gc.getT());
    }
}

2.泛型接口

在接口后面加泛型,可以是多个数据类型

package genericedemo;

/**
 * @Description:
 * 泛型接口
 */
public interface GenericeInterface<E,H> {
    void test1();
    E test2();
    H test3(E e);
}

//实现类,在实现泛型接口的时候,需要确定类型
class GenericeInterfaceImpl implements GenericeInterface<Integer,String>{

    @Override
    public void test1() {
        System.out.println("test1.............");
    }

    @Override
    public Integer test2() {
        return 100;
    }

    @Override
    public String test3(Integer integer) {
        System.out.println(integer);//10
        return "你好";
    }
}

package genericedemo;

public class TestGenericeInterface {
    public static void main(String[] args) {
        GenericeInterface<Integer,String> gif = new GenericeInterfaceImpl();
        gif.test1();
        Integer i = gif.test2();
        System.out.println(i);//100
        System.out.println(gif.test3(10));//10
    }
}

3.泛型方法

在方法的前面加泛型,表示泛型方法.

package genericedemo;

/**
 * 泛型方法
 */
public class GenericeMethod<G,H> {
    public void show1(H h){
        System.out.println(h);
    }
    //返回类型的时候,规定一种类型<类型>
    public <A> A show2(A h){
        return h;
    }
    public G show3(G g,H h){
        System.out.println(h);//java
        return g;//300
    }

}

package genericedemo;

public class TestGenericeMethod {
    public static void main(String[] args) {
        //在创建对象的时候,确定类型
        GenericeMethod<Integer,String> gm = new GenericeMethod<>();
        gm.show1("hello");
        Integer s = gm.show2(100);
        System.out.println(s);
        Integer i = gm.show3(300, "java");
        System.out.println(i);


    }
}

5.泛型限定符

<?>表示任意的数据类型

<? extends T>表示T数据类型和它的子类型

<? super T>表示T数据类型和它的父类型.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值