一、数组和集合的区别:

1.数组的大小是固定的,并且同一个数组只能是相同的数据类型

2.集合的大小是不固定的,在不知道会有多少数据的情况下可使用集合。

二、集合的三种类型:list(列表)、set(集)、map(映射)

List接口和Set接口属于Collection接口,Map接口和Collection接口并列存在(同级)。

List(元素可重复性,有序性):

public static void main(String[] args) {List<Integer> arraylist=new ArrayList<>();arraylist.add(3);arraylist.add(22);arraylist.add(31);arraylist.add(345);arraylist.add(63);arraylist.add(3);//ArrayList底层是一个数组,输出时需要foreach遍历,查询快,增删慢,线层安全,效率高System.out.print("arraylist:");for (Integer test : arraylist) {System.out.print(test+" ");}System.out.println();   //换行//Vector底层是一个实现自动增长的对象数组,元素会自动添加到数组中,查询快,增删慢,线层安全,效率低Vector<Integer> vector=new Vector<>();vector.add(3);vector.add(5);vector.add(25);vector.add(51);vector.add(5);System.out.println("vector:"+vector);//LinkedList底层是一个链表,查询慢,增删快,线层不安全,效率高LinkedList<Integer> linkedList=new LinkedList<>();linkedList.add(30);linkedList.add(30);linkedList.add(34);linkedList.add(55);System.out.println("linkedlist"+linkedList);

运行结果:

Set(具有唯一性,无序性):

public static void main(String[] args) {HashSet<String> hashSet = new HashSet<>();LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();TreeSet<String> treeSet = new TreeSet<>();for (String data : Arrays.asList("afaE", "afaE", "asfweD", "hfasfae", "aefaeA")) {hashSet.add(data);linkedHashSet.add(data);treeSet.add(data);}//HashSet:无序,随机输出。底层数据结构是哈希表,依赖hashCode()和equals()两个方法来保证唯一性。System.out.println("Ordering in HashSet :" + hashSet);//LinkedHashSet:FIFO插入有序,先进先出。底层结构是链表和哈希表,由链表保证元素有序,哈希表保证元素唯一。System.out.println("Order of element in LinkedHashSet :" + linkedHashSet);//TreeSet:有序,唯一。底层结构是红黑树,排序采用自然排序和比较容器排序,根据比较的返回值是否为0来判断元素唯一。System.out.println("Order of objects in TreeSet :" + treeSet); }

运行结果:

Map(采用键值对<key,value>存储元素,key键唯一):

hashmap:底层结构是数组+链表,无序,线程不安全,效率高,允许有null(key和value都允许),父类是AbstractMap

treemap:底层结构是红黑树,有序,将数据按照key排序,默认是升序排序。

hashtable:底层结构是哈希表,无序,线程安全,效率低,不允许有null值,父类是Dictionary

public static void main(String[] args) {// HashMap采用键值对存储数据,采用put()方法存放数据Map<Integer, String> map = new HashMap<Integer, String>();map.put(1, "中国");map.put(2, "小日本");map.put(3, "美国佬");// foreach遍历方法,普遍使用,通过对key唯一的特性,进行key遍历for (Integer key : map.keySet()) {System.out.println(key + "-->" + map.get(key));}System.out.println("------------------------------------");// 因为key唯一,key重复时会自动覆盖value之前存储的数据map.put(3, "英国佬");for (Integer key1 : map.keySet()) {System.out.println(key1 + "-->" + map.get(key1));}System.out.println("------------------------------------");// Map.Entry遍历key和value,同样是foreach方法,推荐容量大的时候使用for (Map.Entry<Integer, String> entry : map.entrySet()) {System.out.println(entry.getKey() + "-->" + entry.getValue());}}

运行结果:

转载于:https://www.cnblogs.com/williamjie/p/11458721.html

List、Map、Set之间的联系与区别:相关推荐

  1. java map与set的区别_java 集合(list,set,map)三者之间的关系和区别

    原 java 集合(list,set,map)三者之间的关系和区别 一:先上一张关系图,让大家看的更明白. 备注:其中红色部分为实现,其他地方均为接口. 二:各自的特点. List 有序,可重复Arr ...

  2. 大数据Map Reduce 和 MPP数据库 的区别

    总结来说MR是一个编程模型,你可以用MR这个编程模型自己实现MPP所做的事. MPP则是一种SQL的计算引擎. "MR分而治之的策略" 和 "Massively Para ...

  3. Git、GitHub、GitLab三者之间的联系以及区别

    Git.GitHub.GitLab三者之间的联系以及区别 在讲区别以及联系之前先简要的介绍一下,这三者都是什么(本篇文章适合刚入门的新手,大佬请出门左转) 1.什么是 Git? Git 是一个版本控制 ...

  4. Java中Array和ArrayList之间的9个区别

    array和ArrayList都是Java中两个重要的数据结构,在Java程序中经常使用. 即使ArrayList在内部由数组支持,了解Java中的数组和ArrayList之间的差异对于成为一名优秀的 ...

  5. spring揭秘_被问到了! Spring 和 Spring Boot 之间到底有啥区别?

    相信很多小伙伴和我一样,常用Spring 和Spring Boot 但是就是没有研究二者之间到底有什么区别? 今天就来大揭秘 ↓ 概述 对于 Spring和 SpringBoot到底有什么区别,我听到 ...

  6. pyHook pyHook3 区别_一般过去时态和现在完成时态之间到底有什么区别?通过一道语法题,帮你彻底讲清楚!...

    有同学在群里问了一道关于"现在完成时态和一般过去时态之间区别"的语法题,摘录如下: There is someone knocking at the door. -- It mus ...

  7. telnet远程登陆、mstsc远程控制、SSH之间的比较和区别

    Telnet与远程桌面mstsc 一 演示 打开mstsc演示: 01 win + r 输入mstsc 02 输入要远程的机子的用户名和密码 03 登录 04 连接开启了,如图即是通过win窗口操作远 ...

  8. sql语句和java的关系_java中Statement 与 PreparedStatement接口之间的关系和区别

    Statement 和 PreparedStatement之间的关系和区别. 关系:PreparedStatement继承自Statement,都是接口 区别:PreparedStatement可以使 ...

  9. 栈,队列和链表三者之间的关系与区别

    最近一直在学习算法,刷算法题,但是自从大学毕业以来,数据结构的知识都还给老师了,只会个数组,所以前期刷的题目也都是有关数组的 最近跟着小册重学了一遍数据结构,今天就记录一下栈,队列和链表三者之间的关系 ...

  10. 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。

    1.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别. linux发行版介绍 2.安装Centos7.6操作系统,创建一个自己名字的用户名,并可以正常登录,将主要步骤截图. 安装Cent ...

最新文章

  1. Windows下通过VNC远程访问Linux服务器,并实现可视化
  2. C++ 编译,运行过程 详解。
  3. C++ Opengl 显示列表源码
  4. mysql数据库提示2005_Mysql数据库从本地导出 服务器上导入时报 ERROR 2005 HY000 Unknown MySQL ser...
  5. 如何创建一个基本JQuery的插件
  6. sklearn svm如何选择核函数_使用python+sklearn实现成对度量、相关性和核函数
  7. MySQL默认INFORMATION_SCHEMA,MySQL,TEST三个数据库用途(转)
  8. 改动Xmodem/Zmodem上传下载路径
  9. java语言介绍及特点
  10. php 翻转180度,如何翻转视频—将视频翻转90或180度
  11. Phoenix升级:Error: Cluster is being concurrently upgraded from 4.7.x to 4.8.x.
  12. 框架协议、合同的下达
  13. 1477: 多重继承派生(1)--家具、床、沙发和沙发床
  14. 局域网电脑打印机显示未连接到服务器,win7局域网连接打印机显示本地打印后台处理程序服务没有运行...
  15. JDBC各种jar包下载(免费资源)
  16. 利用Qt来进行文件后缀的更改
  17. 假如你想成为一名测试工程师(程序员找茬师)
  18. Go语言进阶,结构体与json字符串格式的互相转换
  19. Android 界面设计尺寸规范
  20. 基于Inception v2实现判别mnist手写数据集

热门文章

  1. PS2018学习笔记(30-35节)
  2. 20172301 2018-2019-1《程序设计与数据结构》课程总结
  3. react.js从入门到精通(六)——路由的使用
  4. zenoss(智能监控软件)
  5. 又一家药企IPO被拒,原因竟然是……
  6. Docker-创建和分享应用(3)
  7. Verdi(debussy)中查看memory
  8. 一加6手机突然没信号没服务器,如何从技术上解决手机信号问题?一加6替你想到了...
  9. java 浅堆 深堆_JVM中的一个小知识点:深堆和浅堆的概念
  10. 2021-04-13 Linux I/O模型