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----泛型与集合相关推荐

  1. (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入

    -- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...

  2. java 泛型和集合_Java集合和泛型

    集合 常用的集合有ArrayList,TreeSet,HashMap,HashSet. ArrayList 最常用的集合,每次插入都在后面追加元素. TreeSet 以有序状态保持并可防止重复.当你需 ...

  3. java泛型视频教程_Java泛型快速教程

    java泛型视频教程 泛型是Java SE 5.0引入的一种Java功能,在其发布几年后,我发誓那里的每个Java程序员不仅会听说过,而且已经使用过. 关于Java泛型,有很多免费和商业资源,而我使用 ...

  4. java泛型实验报告,java实验报告异常集合类和泛型

    java实验报告异常集合类和泛型 成绩: 面向对象原理与 Java 实践课程实验报告实验 3:异常.集合类和泛型姓 名 _ ___ 班 级 _ ___ 学 号 _ ___ 实验地点 _ ___ 实验时 ...

  5. Java实用教程笔记 泛型与集合框架

    泛型与集合框架 Generics 链表 LinkedList < E >泛型类 接口回调 常用方法 LinkedList< E >泛型类实现Link< E >泛型接 ...

  6. java 泛型 t_Kotlin(2) 泛型与集合

    前言 以一个java老鸟的角度,如何去看 kotlin.Java源代码应该如何用Kotlin重构.如何正确学习kotlin并且应用到实际开发中.本文将会探究. 本文分两大块,重难点和潜规则. 重难点: ...

  7. java创建集合有的不用泛型_为什么在Java泛型右手边的集合类型没有任何影响?...

    使用Java的Generics功能我创建了一个List对象,在左侧我使用的是原始类型List,在右侧我使用的是泛型类型ArrayList. List myList=new ArrayList(); 我 ...

  8. 【Java】Collection集合和泛型

    学习目标:会存取,掌握特性 学习方式:学习顶层接口/抽象类的共性方法,使用底层的子类创建对象使用 1 集合框架 集合类的继承体系: Collection接口: ·············1) List ...

  9. java 泛型集合示例_Java 泛型(示例代码)

    1.泛型的由来 我们先看下面这段代码: 报错信息如下: 也就是 集合中第二个数据是 Integer,但是我们取出来的时候将其转换为 String 了,所以报错. 那么这个如何解决呢? ①.我们在遍历的 ...

  10. 小汤学编程之JAVA基础day11——集合框架:List/Set/Map集合、Collections集合工具类、泛型、TreeMap和TreeSet

    一.集合的特点 二.继承结构图 三.List集合 1.特点     2.ArrayList类     3.LinkedList类     4.两者的对比     5.集合的遍历 四.Set集合 1.特 ...

最新文章

  1. 服务器虚拟化北向,KVM虚拟化的部署及使用
  2. F#中的异步和并行设计模式(三):代理
  3. 我家的漫路超市——怎么开淘宝网店
  4. getopt函数应用
  5. JavaScript中的对象比较[重复]
  6. python机器学习库sklearn——数据预处理
  7. 苹果系统上安装linux系统,Mac OS X下制作安装Linux系统的USB启动盘
  8. java应用安全设计_应用层安全架构设计-访问控制
  9. TOMCAT如何配置域名,可以用本地服务进行测试
  10. 雷达卫星测高原理、最新发展情况
  11. J2EE视频实战教程网址
  12. MySQL联合查询及取别名
  13. WGS-84坐标系转GCJ02坐标系
  14. 蓝桥杯 Fibonacci数列求余数 C语言版本
  15. mcc、mbuild和mex命令详解
  16. 美国企业家宣言(转)
  17. 台式计算机主板检测与维修,主板故障!教你如何用主板诊断卡检测维修电脑主板故障...
  18. 拔山盖世(BSGS)算法
  19. 遍历HashMap的几种常用方法
  20. GO基础---for循环

热门文章

  1. Win32 PE病毒入门教程
  2. 京东店铺的运营爆款打造
  3. java根据ip反查地理位置的实现方法
  4. 快上车!Java技术开发大厂直通车马上启动!
  5. python外星人入侵游戏图片_[Python]简单的外星人入侵游戏
  6. 输入压缩空间量是分区量吗_win7系统压缩分区的操作教程
  7. 2022年全球市场液相色谱仪器总体规模、主要生产商、主要地区、产品和应用细分研究报告
  8. 大数据ssm项目案例总结
  9. python 代码片段备忘
  10. 基于java的量化交易软件,用户可自行编写交易策略,用于期货、股票、外汇、炒币等多种交易场景,前端采用node14 + vue2