当前位置: 首页 > news >正文

java集合类(二)

第十六天知识点总结

一、泛型                                                                                                                                                                                                                                                                                                                                                                                                                         

 泛型:java jdk 1.5 新特性。

 泛型的好处:

      1.运行时的错误提前到编译时。

      2.避免无谓的强制类型转换

  自定义方法泛型:自定义泛型就是一个数据类型的占位或一个数据类型变量,一般用TE来做这个占位符号,占位符号可以随意写,但是必须遵守标识符的命名规范

  方法泛型的格式:

   <占位符> T : 定义了一个泛型

举例:

Public  static  <T>T  test(T s){

    Return  s;

}

如果你传进去的是一个基本数据类型:接收的时候应该用它的包装类来接收.

int Integer  short Short  double Double  float Float  byte Byte

boolean  Boolean  long Long  char charactor

自定义数组的工具类

定义一个泛型类:

      定义格式

   class 类名<声明自定义的泛型> { }

泛型类的使用注意点:

   1.泛型类上定义的自定义泛型的类型是在创建这个类对象时确定的。

   2.如果一个自定义泛型的类,在创建对象时没有指定,默认为Object类型。

   3.静态方法不能够使用类删自定义的泛型,必须在方法上定义一个泛型。

 

泛型接口:

泛型接口的定义方式:

 Interface 接口名<声明自定义的泛型> {   }

接口泛型的使用注意点:

1.接口上自定义的泛型在实现接口的时候被指定的

2.如果实现接口是没有指定接口 ,那么就会默认为Object

3.需要在创建接口实现类对象是指定数据类型,

  那么需要格式:class 类名<声明自定义泛型> implements 接口<声明自定义泛型>

 

判断下列写法是否错误:

   ArrayList<String> list1 = new ArrayList<String>(); //true

   ArrayList<String> list2 = new ArrayList<Integer>();//false

   ArrayList<Integer> list3 = new ArrayList<String>();//false

   

  1. ArrayList list4 = new ArrayList<String>();//true

  2. ArrayList<String> list5 = new ArrayList();//true

  推荐使用第一种

 

二、Map集合

  Map集合 接口 双列集合 key:value 类似于OC中的字典

 特点:存储数据是以键和值的方式,键不允许重复,值可以重复

-----> HashMap 基于哈希表来存储数据的

存储原理也使用哈希表来存放:

  HashMap添加了元素,首先会调用键的hashCode方法获得一个哈希值,然后经过运算获取一个位置。

 情况一:如果位置上没有元素,那么直接将该元素存放在此位置。

 情况二:如果位置上有元素,那么还会调用元素的equals方法与位置上的元素做比较,如果返回的是true,那么就被视为相同的键,就不存了,反之返回的是false,那么就可以存放该元素。

-----> TreeMap:基于二叉树的结构存储,特点:以键来做自然排序

使用注意点:

1.TreeMap里添加元素时,如果元素的键具备自然排序功能,那么就会通过自然排序进行排序。

2.TreeMap里添加元素时,如果元素的键不具备自然排序功能,键所属的类必须要实现Comparable接口,把这个键的比较规则定义在compareTo方法中。

3.TreeMap里添加元素时,如果元素的键不具备自然排序功能,也没有实现Comparable接口,创建TreeMap的时候给他一个比较器

结构:

 Class 类名implements Compartor 接口{

}

键的比较规则定义在compare方法中。

-----> HashTable HashMap 一样的使用,线程安全。访问比较慢(了解)

Map集合的使用注意点:

   1.键可以是任意对象,值也可以是任意对象

   2.Map集合中是可以嵌套list集合

(重点掌握)Map集合常用的方法:

 添加:put(K key, V value);

       putAll(Map <?extends K,?extends V>  m);

 删除:clear();

       remove(Object key);

 获取:get(Object key);

       Size();

 判断:isEmpty();

       containsKey(Object key);

       containsValue(Object value);

 

  Map集合的遍历方式:

通过迭代器来遍历:

  entrySet();

  keySet();

  values();

Map.Entry: 接口:提供给用户来操作map集合

getKey(); 获取键

getValue();获取值

setValue();更改值

 

转载于:https://www.cnblogs.com/lizixiansheng/p/6134728.html

相关文章:

  • 对OpenCV中Haar特征CvHaarClassifierCascade等结构理解
  • 《代码整洁之道》读书笔记
  • ArcEngine标注和注记(-)
  • cucumber安装可能发生的错误
  • Java获取本地IP地址
  • vue的路由传值query方法
  • Linux 安装python3.7.0
  • TensorFlow教程03:针对机器学习初学者的MNIST实验——回归的实现、训练和模型评估...
  • 云计算人才观念更重要
  • 以流动债务为例论指标的合理使用
  • 初学python,感受和C的不同
  • RANSAC 剔除错误匹配 估计模型
  • OpenLDAP在LINUX下的安装说明
  • 快速搭建企业subversion
  • asp.net 2.0 导出DataTable到Excel中
  • Angular 4.x 动态创建组件
  • conda常用的命令
  • JavaScript-Array类型
  • Vim 折腾记
  • 初识 beanstalkd
  • 高程读书笔记 第六章 面向对象程序设计
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 解析 Webpack中import、require、按需加载的执行过程
  • 警报:线上事故之CountDownLatch的威力
  • 延迟脚本的方式
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $.ajax()参数及用法
  • $.each()与$(selector).each()
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (2)MFC+openGL单文档框架glFrame
  • (rabbitmq的高级特性)消息可靠性
  • (八十八)VFL语言初步 - 实现布局
  • (转)linux下的时间函数使用
  • (转)可以带来幸福的一本书
  • .bat批处理出现中文乱码的情况
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net 中viewstate的原理和使用
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET命令行(CLI)常用命令
  • .NET轻量级ORM组件Dapper葵花宝典
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [20181219]script使用小技巧.txt
  • [Android]使用Git将项目提交到GitHub
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
  • [Firefly-Linux] RK3568 pca9555芯片驱动详解
  • [k8s系列]:kubernetes·概念入门
  • [linux][调度] 内核抢占入门 —— 高优先级线程被唤醒时会立即抢占当前线程吗 ?
  • [one_demo_9]判断数组是否递增
  • [OpenGL(Win32)] - 3D 轮廓字体
  • [Symbol.toPrimitive](hint) hint 什么时候为 default?