JAVA集中中 List Set Map 区别和关系

1List:List元素的特点!    

List集合的遍历方式:         while-迭代器遍历         for-迭代器遍历         foreach-迭代遍历         for-get遍历(只有List才可以,set,map都不可以)

有序可重复,因为底层的实现数组和链表,都是有下标来表示唯一性的,存进去什么顺序,取出来还是什么顺序。

ArrayList : 底层是一个索引数组,有顺序的,靠索引数组的下标

LinkedList: 底层是一个链表式的先后维持顺序。

深入List集合

ArrayList(): 底层是索引数组,索引下标        ArrayList集合底层默认初始化的容量是 10,扩大后容量是原始容量的1.5倍        Vector集合底层默认也是10,扩大后容量是原来的两倍        ArrayListshi Vector 的升级,不要再用Vector        针对数组的代码优化:尽量不要扩容操作,建立集合的时候,就初始化指定容量         List集合即可以有(迭代器-while循环,for-迭代器循环,for-get循环(只有list可以))

下面是个List例子供大家参考:

import java.util.*;

public class List01{

  public static void main(String[] args){

  List li = new ArrayList();

  li.add(100);

  li.add(10);

  li.add(110);

  li.add(100);

for (Iterator it = li.iterator(); it.hasNext(); ){

    System.out.println( it.next() );

    }

  }

}

2 ,Set:无顺序不可重复:底层是一个索引数组。HashMap键的部分     HashSet:HashTable

    SortedSet:红黑树 无序不可重复,但是存进去的元素可以按照元素大小自动排序

    SortedSet集合存储元素为什么可以自动排序        因为被存储的元素实现了Comparable接口;

       SUN编写的的TreeSet集合在添加元素的时候,会自动调用CompareTo方法完成比

Set集合:HashSet     1 HashSet 是HashMap的一个实现,本质就是一个HashMap,而HashMap的数据结构是一个Hash表

2 哈希表(Hash表):又叫散列表,其底层是用Hash函数组合起来的一个:数组和单向链表;每个单向链表表都有一个独一无二的hash值,这个值同时也 是数组的下标,每个单项列表节点的hash值是相等的;     hash值本质是把key的值调用hashCode()方法        3 向hash表中添加元素的过程            1) 先调用被存储的key,调用hashCode方法,这个算出hash值,即数组的下标,然偶调用equals()方法,和数组的所有下标进行比对,如果没 有,就在新的桶位(就是下标位)创建链表               (如果不存在,则作为一个新的下标,添加一个数组元素,这个元素作为这个新的链表的头元素存在)            如果有,则继续调用equals()方法,把键和值和链表中的值进行比较,如果返回为true那么,就代表该链表中已经有了这个key值,放弃添加,如果 没有,则返回false,然后连值一起放到当前的hash值链表中

4 HashSet本质是hashMap的key部分,两者完全一样

5 HashSet和HashMap初始化容量都是16,默认加载因子是0.75

下面是例子:

import java.util.*;

public class Collection_08_Set_01{

  public static void main(String[] args){

    Set s = new HashSet();

s.add(1);//自动装箱:基本数据类型自动转型为相对应引用数据类型                 //自动拆箱:是指有对应的基本数据类型的对象,自动转型为其基本类型

     s.add(1);

     s.add(3);

    s.add(4);

     Iterator it = s.iterator();

     while (it.hasNext()){//hasNext()的返回值是boolean (布尔值)

     System.out.println( it.next() );

}

for (Iterator its = s.iterator(); its.hasNext(); ) {

    System.out.println( its.next() );

    }

  }

}

3 Map:map无顺序可重复

  hash(哈希):根据对象的特性为对象生成一个唯一标示符的方法

  Oject中hashCode()是哈希的一个应用,拿对象的内存地址经过运算来作为对象的唯一标示符

  HashMap:最底层还是个数组+单向链表:我们把下标是字符串的数组叫关联数组

  数组的下标是一个字符串

Map 集合和Collection不一样,但是操作是一样的,只是操作的方法有细微的差别  增       Object put(Object key, Object value);       向集合中添加键值对  删         void clear(); 清空map  改       数据类型转换  查       int size(); //获取Map中键值对的个数       boolean isEmpty();//判断是否为空       Object get(Object key);//通过key获取对应对象的值       Collection values();//获取map集合中所有value对象的集合       boolean:containsKey(Object key);//判断集合中是否有这样的key键       boolean containsValue(Object value)//判断集合中是否有这样的值       Set keySet();//获取集合中所有的key,以集合方式返回       Set entrySet;//返回此映射中包含的映射关系,Set集合方式返回
      遍历       HashMap默认初始值16,默认加载因子是0.75

下面是例子:

import java.util.*;

  public class Collection_06_Map_01{

    public static void main(String[] args){

      //1 创建一个HashMap的集合

      Map ps = new HashMap();

      //2 往里面添加元素

      ps.put("1000","jack");

      ps.put("1011","jobs");

      ps.put("1002","cook");

      ps.put(1003,"rose");//这里会调用Integer的hashCode()方法:1003.hashCode().hashCode(1003),return-->1003

      ps.put("1000","sun");

总结 :list 和set 有共同的父类 它们的用法也是一样的 唯一的不太就是set中不能有相同的元素 list中可以
list和set的用途非常广泛 list可以完全代替数组来使用
map 是独立的合集 它使用键值对的方式来储存数据 键不能有重复的 值可以用 
map不像上边两种集合那个用的广泛 不过在servlet 和jsp中 map可是绝对的重中之重 页面之间传值全靠map

转载于:https://www.cnblogs.com/M-HWBK/p/4678389.html

List Set Map相关推荐

  1. Map的分类和不同的应用场景

    java为数据结构中的映射定义了一个接口java.util.Map; 它有四个实现类,分别是HashMap,Hashtable,LinkedHashMap和TreeMap 可能很多人只使用过HashM ...

  2. java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解

    1. Map.getOrDefault() 翻译一下官方解释: java.util.Map<K, V> V getOrDefault(Object key, V defaultValue) ...

  3. Go 学习笔记(67)— Go 并发安全字典 sync.Map

    1. 并发不安全的 map Go 语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的. 换句话说,在同一时间段内,让不同 goroutine 中的代码,对同一个字典进行读写操作是 ...

  4. Python 常用内置函数map、zip、filter、reduce、enumerate

    Python 中有许多非常实用的内置函数,通过这些函数我们可以方便的实现某些功能,下面就列举一些常用的内置函数. 1. map() 函数 map() 可以根据提供的函数对指定序列做映射,它接受一个函数 ...

  5. 将request中的所有参数存放到自定义的map中

    /*** <获取参数map>* * @return 参数map* @throws Exception */protected Map<String, Object> getPa ...

  6. Map再整理,从底层源码探究HashMap

    前言 本文为对Map集合的再一次整理.内容包括:Map HashMap LinkedHashMap TreeHashMap HashTable ConcurrentHashMap Map Map< ...

  7. Java集合详解之Map

    一.首先看看集合框架体系图 从图中可以看到,Map接口扩展了Iterator接口,关于Iterator接口详解请移步:Iterator接口详解 二.Map是什么? Map<k,v>使用键值 ...

  8. 网络模型mAP计算实现代码

    网络模型mAP计算实现代码 一.mAP精度计算 这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negtive)分别是: 1)True posi ...

  9. 2021年大数据常用语言Scala(二十二):函数式编程 映射 map

    目录 映射 | map 用法 案例一 案例二 映射  map 集合的映射操作是将来在编写Spark/Flink用得最多的操作,是我们必须要掌握的.因为进行数据计算的时候,就是一个将一种数据类型转换为另 ...

  10. 2021年大数据常用语言Scala(十八):基础语法学习 Map对象

    目录 Map对象 不可变Map 可变Map Map基本操作 Map对象 Map可以称之为映射.它是由键值对组成的集合.在scala中,Map也分为不可变Map和可变Map. 不可变Map 定义 语法 ...

最新文章

  1. 统计计量 | 协方差和相关系数的暧昧关系:共性与个性
  2. 《计算机网络》实验报告——常用网络命令
  3. WPF 实现调用本机摄像头~
  4. 忘记mysql的root密码后,修改密码
  5. JavaIO15FileReader和FileWriter源码分析及介绍使用
  6. 【matlab】元胞数组(使用celldisp显示元胞数组)
  7. java File_encoding属性
  8. VC 无标题栏对话框移动
  9. 分支程序设计03 - 零基础入门学习C语言12
  10. C++语言编程软件推荐及下载教程
  11. linux中c语言开发环境,1.1 Linux下的C语言开发环境
  12. 9V降压5V低功耗恒压稳压芯片,大电流3A方案和LDO
  13. 解决KETTLE9 连接MYSQL 8 Error connecting to database: (using class org.gjt.mm.mysql.Driver)
  14. 亚马逊经济:从仓库到庞大的零售帝国
  15. 用Ai(adobe illustrator)制作文字放射效果
  16. Allegro174版本新功能介绍之和172版本兼容设置
  17. 设计一个Person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。根据类的封装性要求,把name、age、sex声明为私有的数据成员,声明公有的成员函数Regist
  18. 实现小程序连接服务器(Java后台)发送请求,并返回响应
  19. python数据分析就业前景_数据分析师找工作的秘诀,从读懂招聘 JD 开始
  20. 计算机学报韶关学院,期刊影响因子_自然科学_专业资料.doc

热门文章

  1. 图论:图的四种最短路径算法
  2. 千峰网络安全笔记(前三讲)
  3. java jni ocx_Java调用ocx控件以及dll
  4. socket10053
  5. windows系统:oracle 10g的下载、安装、配置 (提供绝版安装文件下载)
  6. stm32 设置systick中断抢先式优先级
  7. JVM垃圾回收系列--垃圾回收器的详解/对比
  8. 关于CreateParams的参数
  9. LoadLibrary failed with error 1114:动态链接库(DLL)初始化例程失败 解决方法
  10. Java基础教程-刘刚-专题视频课程