Java教程

Java----泛型与集合

本文主要是介绍Java----泛型与集合,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java----泛型与集合

  • 一、泛型
  • 二、Map集合
  • 三、HashMap集合特点
  • 四、LinkedHashMap集合
  • 五、Hashtable
  • 六、TreeMap
  • 七、Properties

一、泛型

1、泛型的安全机制
泛型作用:强制了集合存储固定的数据类型
2、书写格式

//集合类<>

3、泛型的好处

①安全性提高了
②程序代码量减少
③避免了强制类型转换
④程序的问题提前到了运行前

4、泛型中的E

E没有实际价值,只是一个变量
特殊:等待接收指定的数据类型

ArrayList<String> ar = new ArrayList<String>();
//此时E变成String类型

5、自定义泛型类

public class MyGe<MY> {
    private MY i;
    public void setI(MY i){
        this.i = i;
    }
    public MY getI(){
        return  i;
    }
}
public class GeTest {
    public static void main(String[] args) {
        MyGe<String> my = new MyGe<String>();
        my.setI("my");
        String str = my.getI();
        System.out.println(str);
    }
}

6、自定义泛型方法

    //非静态方法
    public void print(MY my){
        System.out.println(my);
    }
    //静态自定义泛型方法
        public static <A>void print1(A a){
        System.out.println(a);
    }

说明

1、静态方法参数中的泛型,不能和类一样
2、静态方法的泛型,需要在方法上单独定义
3、定义写在返回值类型前面

7、泛型接口
方法1:

//定义接口
public interface In <A>{
    public abstract void print2(A a);
}
//实现类实现接口重写方法
public class GeTest2<A> implements In<A>{
    public void print2(A a){
        System.out.println(a);
    }
}
//调用实现类
public class Test1 {
    public static void main(String[] args) {
        In<String> in = new GeTest2<String>();
        in.print2("abc");
    }
}

方法2

//泛型接口的使用方法2
public class GeTest3 implements In<String>{
    public void print2(String s){
        System.out.println(s);
    }
}

8、泛型通配符

public static void ha(List<?> list){
        
}
//<?>表示通配符:可以传任何类型

9、泛型限定
泛型限定:限制的是数据类型

<? extends Company>传递类型可以是Company或者是其他子类 <? extends E>传递E类型或者是E的子类,泛型上限限定 <? super E>传递E类型或者是E的父类,泛型下限限定

二、Map集合

1、Map接口方法

1、V put(k,v)存储键值对,存储重复键,返回被覆盖之前的值
2、V get(K)通过键获取值,参数传递键,找这个键对应的值,没有这个键返回null
3、boolean containsKey(K)判断集合是否包含这个键,返回true
4、boolean containsValue(V)判断集合是否包含这个值,返回true
5、int size()返回集合长度,Map集合中键值对的个数
6、V remove(K)移除指定键值对,返回被移除之前的值
7、Collectionvalues() Map集合中所有的值拿出,存储到Collection集合

2、Map集合的遍历-键值对映射关系

1、Map接口的方法Set<Map.Entry<Key.Value>>entrySet()
方法返回Set集合,集合中存储的元素,比较特别
存储的是Map集合中,键值对映射关系的对象,内部接口Map.Entry
2、遍历Set集合
3、取出Set集合的元素
是Map.Entry接口对象
接口对象方法:getKey(),getValue()

三、HashMap集合特点

1、哈希表结构
2、保证键的唯一性,用于键的对象,必须重写hashCode,equals方法
3、集合允许使用null,作为键或值

四、LinkedHashMap集合

继承于HashMap集合实现Map接口,LinkedHashMap底层事项原理是哈希表,双向链,存储有序,特性和HashMap一样

五、Hashtable

特点

底层是哈希表
线程安全,运行速度慢被HashMap取代
不允许null的值和键

六、TreeMap

特点

1、底层是红黑树结构
2、存储到TreeMap中元素,对键进行排序
3、排序依据

对象的自然顺序,作为键的对象,实现了接口Comparable
自己提供比较器,实现家接口Comparator,优先级高

七、Properties

继承Hashtable,实现Map接口
底层是哈希表
线程是安全的运行速度慢
集合没有泛型的写法,键和值的数据类型是String类型
集合有自己的特有方法
此集合可以和IO流对象结合使用,实现数据的持久存储

这篇关于Java----泛型与集合的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!