一、Map接口

1、 Map接口就是最顶层了,上面没有继承了。Map是一个容器接口,它与前面学的List.Set容器不同的是前面学的这些容器,一次只能传入一个元素,但是Map容器一次可以传入一对元素(键值对),这个键值对是封装在entry对象内部的,一个entry对象就是一个键值对。 Map容器的特点:键是不能重复的,值是可以重复的,并且一个键只能对应一个值。Set 容器也是无序不可重复的 Map接口和Collection接口是两个并列的没有任何关系的集合(都是接口) Map接口下面有HashMap集合、TreeMap集合、Hashtable集合;Hashtable集合下面有properties集合。

二、HashMap集合

1、HashMap是无序的,不可重复的(判断重复的标准是键值对的键不能重复,也是通过HashCode方法和equals方法来判断的), HashMap的底层也是数组加链表实现的(HashSet底层也都是数组加链表的结构实现的)HashMap可以用null作为键和值,并且是线程不安全的

  HashMap构造方法:

  HashMap() 创建一个HashMap对象

  HashMap(Map m)  创建一个键值对与m相同的HashMap集合

2、HashMap常用方法

V put(K key, V value) 添加/修改指定的映射                   返回的是: 被替换的值

boolean containsKey(Object key)   判断map容器是否包含指定的键

boolean containsValue(Object value) 判断map容器是否包含指定的值

V get(Object key)   根据指定的键获取指定的值

void putAll(Map m) 把m集合中所有的元素,添加到当前map容器中

V remove(Object key) 根据指定的键删除对应的映射

int size()   获取map容器中元素的个数

void clear() 移除所有映射关系。

boolean isEmpty()    判断map容器是否为空,  为空返回true,否则返回false

3、HashMap循环相关的方法:

Collection values()   获取map中所有的值

Set  keySet()         获取map中所有的键

Set  entrySet()       获取map所有的entry对象

Map接口没有继承Iterable接口所以不能使用增强for循环和迭代器循环。

三、Collections工具类

Arrays工具类是sun公司为我们提供的一个专门操作数组的类

Collections工具类是sun公司为我们提供的专门操作集合的类

1、常用方法

static T  max(Collection coll)  获取集合中最大元素

static T max(Collection coll, Comparator comp)  根据比较器获取最大的元素

static T  min(Collection coll) 获取集合中最小元素

static T  min(Collection coll, Comparator comp)  根据比较器获取最小元素

static void reverse(List list)   反转指定列表中元素的顺序。

static void shuffle(List list)  随机打乱集合中的元素

static  void sort(List list)  根据元素的自然顺序 对指定列表按升序进行排序。

static  void sort(List list, Comparator c)  根据指定比较器产生的顺序对指定列表进行排序。

static  List emptyList()   返回空的列表(不可变的)。

static  Map emptyMap() 返回空的映射(不可变的)。

static  Set emptySet() 返回空的 set(不可变的)。

注意:以上三个方法都仅仅表示一种状态而已

四、Hashtable集合

Hashtable和HashMap的区别:

Hashtable是HashMap的前身,Hashtable是线程安全的,而HashMap是线程不安全的,所以HashMap性能要比Hashtable高

Hashtable不能以null作为键和值,而HashMap是允许的(集合中就只有Hashtable不能使用null作为值)

五、TreeMap

TreeMap集合是无序不可重复的,底层都是使用二叉树实现的,这个集合默认是自然排序,也可以使用定制排序(比较器)

要想往TreeSet容器和TreeMap容器中存储数据,那么数据必须要按照一定的顺序排序才能存储

一、Propertites集合

Properties容器是Hashtable容器的子类,他操作的数据也是无序的不可重复的键值对,并且要求键和值都必须是字符串;除此之外,Properties容器的操作方法不能使用继承而来的,因为这样会让他失去自己的意义

1、 常用方法

Object setProperty(String key, String value) 调用 Hashtable 的方法 put。

public String getProperty(String key)取值  根据指定的key获取对应的值 。

public String getProperty(String key, String defaultValue)  根据指定的key获取对应的值,如果没找到,则直接返回defaultValue对应的值

void list(PrintStream out)  把内存里面的数据同步到磁盘上

pp.list(new PrintStream("D:/Java学习资料/资料/2019-04-13-集合框架-Set-DAY20/resources/abc.txt"));//这是绝对路径

pp.list(new PrintStream("a.txt")//这是相对路径 ,相对于当前项目的路径, 这个文件会存在当前项目的根路径 (当前项目的根路径:当前项目打开第一层,就称为根路径)

void load(InputStream inStream)  简单理解把磁盘中的数据读取到内存中

二、泛型

泛型:它是一个泛指,简单理解就是约束着容器只能装某一类型的值

我们只需要在创建对象的时候再具体写出泛型的具体类型。

泛型的注意事项:添加泛型的时候,必须添加引用数据类型,不能添加基本数据类型

泛型有个规范:

E:  element  元素

T:  Type     类型

K:  key      键

V:  value    值

当我们在开发中不确定使用什么数据类型是,就可以使用泛型,避免重复的更改数据类型

泛型的上限和下限:简单记忆:上有顶,下有底,意思就是? extends 引用数据类型  A,你传递的泛型必须是A或者A的子孙类;? super 引用数据类型B,你传递的泛型必须是B或者B的父类

? 是一个通配符,代表任意泛型。

我们最常用泛型的方式:   new  ArrayList<String>();

new HashMap<String,Integer>();

class IntArr<T>;

Map接口下的集合和泛型理解的更多相关文章

  1. List接口下的集合

    集合框架 List接口下的集合特点: Set接口下的集合特点: 1.都是有序的 1.都是无序的 2.都有下标 2.没有下标 3.都可以重复 3.不可重复(覆盖) List接口下的集合 1.ArrayL ...

  2. JAVA笔记20-容器之四Map接口、自动打包、泛型(重要)

    一.Map接口 Map提供的是key到value的映射.key不能重复,每个key只能映射一个value. 注:重复是指equals,但用equals()方法效率低,所以此处用hashCode()方法 ...

  3. Set接口下的集合

    一.集合(定义字段的时候统一使用包装类) 1.集合大类分为List.Set.Map三种,其中,List集合是有序可重复的,并且可以使用普通for循环.增强for循环.正向迭代器.双向迭代器:Set集合 ...

  4. JavaSet接口、唯一元素和Map接口整理

    Set接口 1.1 HashSet集合存储数据的结构(哈希表) HashSet集合,采用哈希表结构存储数据,保证元素唯一性的方式依赖于:hashCode()与equals()方法. 哈希表底层,使用的 ...

  5. Java学习(Map接口)

    一.概述: 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. 1. Collection中的集合,元素是孤立存在的(理解为单身), ...

  6. JAVA基础之Map接口

    个人理解: 个人感觉Map接口以后会经常用到,可以很清晰地查找某个对象,要熟悉其四种遍历方法.特别注意其键值对的键不能是重复的,有想定义有序存取的话,可以使用LinkedHashMap集合.不过定义自 ...

  7. 集合之六:Map接口

    Map接口概述 Map接口中的集合和Collection接口中的集合在存储数据的格式上有很大的不同,Map接口下的内容是以<K , V> ,键值对的形式存储的,我们查询API,Map接口的 ...

  8. Java中的集合(七)双列集合顶层接口------Map接口架构

    Java中的集合(七)双列集合顶层接口------Map接口 一.Map接口的简介 通过List接口,我们知道List接口下的集合是单列集合,数据存储是单列的结构.Map接口下是一个键值对(key-v ...

  9. Java—Map接口中的常用方法

    Map接口与Collection接口的区别 Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储. Map中的集合,元素是成对存在的(理解为夫妻).每 ...

随机推荐

  1. 从Random Walk谈到Bacterial foraging optimization algorithm(BFOA),再谈到Ramdom Walk Graph Segmentation图分割算法

    1. 从细菌的趋化性谈起 0x1:物质化学浓度梯度 类似于概率分布中概率密度的概念.在溶液中存在不同的浓度区域. 如放一颗糖在水盆里,糖慢慢溶于水,糖附近的水含糖量比远离糖的水含糖量要高,也就是糖附近 ...

  2. hadoop记录-hadoop集群日常运维命令

    hadoop集群日常运维命令 #1.namenode hadoop namenode -format #格式化,慎用 su hdfs hadoop-daemon.sh start namenode h ...

  3. day21双下方法,源码相关,异常处理

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 1.列举你了解的面向对象中的特殊成员,并为每个写代码示例.'''__init__初始化:class A: d ...

  4. react-intl

    internationalization standard https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Glob ...

  5. 解决MySQL Access denied for user 'root'@'IP地址' 问题

    1.mysql -u root -p 登陆进MYSQL: 2.执行以下命令: GRANT ALL PRIVILEGES ON *.* TO 'your name'@'%' IDENTIFIED BY ...

  6. APK改之理 手游修改改编安卓程序工具安装使用教程

    APK改之理 手游修改改编安卓程序工具安装使用教程 --APK破解付费程序 apk改之理是pc平台上一款非常好用的apk反编译工具,他将反编译以及签名等功能集中在一起,并且拥有非常人性化的操作界面,如 ...

  7. 只有try和finally,没有catch

    因为没有catch捕获异常,所以异常发生时,会将异常抛出,导致程序中止:在抛出之前会执行finally中的代码. 用于无法捕获处理异常,需要在程序结束之前进行善后处理的场景

  8. Redis缓存穿透和缓存雪崩以及解决方案

    Redis缓存穿透和缓存雪崩以及解决方案 Redis缓存穿透和缓存雪崩以及解决方案缓存穿透解决方案布隆过滤缓存空对象比较缓存雪崩解决方案保证缓存层服务高可用性依赖隔离组件为后端限流并降级数据预热缓存并 ...

  9. python&JSONP(Jquery篇)

    采用Jquery发送跨域请求: <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  10. Python爬虫案例-获取最新的中国行政区域划分

    源网页:中国统计局标准 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/ 打开网页后可以分析出行政区域划分共分为5层 根据传入参数,生成网页 ...