第十六天知识点总结

一、泛型

泛型:java jdk 1.5 新特性。

泛型的好处:

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

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

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

方法泛型的格式:

<占位符> 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();更改值

java集合类(二)的更多相关文章

  1. java集合类(二)List学习

    接上篇  java集合类(一) List接口继承了Collection接口和Iterable接口,即同样含有Collection和 Iterable的特性,还有方法,其基本方法有: 1)有关添加: b ...

  2. 做JavaWeb开发不知Java集合类不如归家种地

    Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容 ...

  3. 【转载】Java集合类Array、List、Map区别和联系

    Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...

  4. Java集合类简单总结(重学)

    java集合类简介(重学) 一.Collection(集合).Map接口两者应该是平行关系吧. 1.Map介绍 Map是以键值(key-value)对来存放的,2个值.通过key来找到value(例: ...

  5. Java集合类中的哈希总结

    JAVA集合类中的哈希总结 目 录 1.哈希表 2.Hashtable.HashMap.ConcurrentHashMap.LinkedHashMap.TreeMap区别 3.Hashtable.Ha ...

  6. java集合类(三)About Iterator & Vector(Stack)

    接上篇:java集合类学习(二) Talk about “Iterator”: 任何容器类,在插入元素后,还需要取回元素,因为这是容器的最基本工作.对于一般的容器,插入有add()相关方法(List, ...

  7. 一张图让你看清Java集合类(Java集合类的总结)

    如今关于Java集合类的文章非常多,可是我近期看到一个非常有意思图片,基本上把Java集合的整体框架都给展现出来了.非常直观. watermark/2/text/aHR0cDovL2Jsb2cuY3N ...

  8. java 集合类Array、List、Map区别和优缺点

    Java集合类主要分为以下三类: 第一类:Array.Arrays 第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Array ...

  9. Java集合详解8:Java集合类细节精讲

    今天我们来探索一下Java集合类中的一些技术细节.主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充.可能不全面,还请谅解. 本文参考:http://cmsblogs.com/?cat=5 具体 ...

随机推荐

  1. RedHat不能使用ifconfig命令

    安装RedHat后,使用ifconfig命令,结果报错command not found,解决方法如下: 1.cat ~/.bash_profile     查看path 2.vi /etc/prof ...

  2. js便签笔记(3)——切记:appendChild()、insertBefore()是移动element节点!

    appendChild().insertBefore()是移动element节点,看书的时候注意过,也可以做一个简单的例子测试一下: <div id="div1"> & ...

  3. java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板

    java 利用spring JavaMailSenderImpl发送邮件,支持普通文本.附件.html.velocity模板 博客分类: Java Spring   本文主要介绍利用JavaMailS ...

  4. D - 蜘蛛牌

    Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Pract ...

  5. Socket编程基础——面向连接TCP

    WinSock是Windows环境下的网络编程接口,它最初是基于Unix环境下的BSD Socket,是一个与网络协议无关的编程接口.WinSock包含两个主要版本,即WinSock1和WinSock ...

  6. input屏蔽历史记录

    设置input 的扩展属性 autocomplete为off即可 <input type="text" autocomplete="off" />

  7. Node.js高级编程读书笔记 - 1 基本概念

    Outline 1 概述和安装 1.1 安装Node 1.2 Node简介 2 Node核心API基础 2.1 加载模块 2.2 应用缓冲区处理.编码和解码二进制数据 2.3 使用时间发射器模式简化事 ...

  8. 论文笔记之:Large Scale Distributed Semi-Supervised Learning Using Streaming Approximation

    Large Scale Distributed Semi-Supervised Learning Using Streaming Approximation Google  2016.10.06 官方 ...

  9. Bootstrap 3 管理模板

    下面这 10 个模板是从最新的 Bootstrap 3 管理模板人工挑选出来的,用来构建网站的后台管理界面,这些模板都是在最近 2 个月内发布. 1. Curo – Admin Template Cu ...

  10. HighCharts使用心得

    HighCharts使用心得 前言: 之前很早的一个项目中使用过highcharts,感觉挺方便的,图表类型也比较丰富,而且还支持数据的下钻,但是如果投入商业使用的话还会有一些版权的问题,所以后来就使 ...