一、JAVA集合类(Collection接口、Map接口)

java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。而Java集合大致可以分为Set、List、Queue和Map四种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合,Java 5 又增加了Queue体系集合,代表一种队列集合实现。

  • Set集合
    Set集合与Collection集合基本相同,没有提供任何额外的方法。实际上Set就是Collection,只是行为略有不同(Set不允许包含重复元素)。Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入
  • List集合
    List集合代表一个元素有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素 。List集合默认按元素的添加顺序设置元素的索引,例如第一个添加的元素索引为0,第二个添加的元素索引为1…List作为Collection接口的子接口,可以使用Collection接口里的全部方法。而且由于List是有序集合,因此List集合里增加了一些根据索引来操作集合元素的方法。
  • Queue集合
    Queue用户模拟队列这种数据结构,队列通常是指“先进先出”(FIFO,first-in-first-out)的容器。队列的头部是在队列中存放时间最长的元素,队列的尾部是保存在队列中存放时间最短的元素。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素。


注意:TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

  • Map集合
    Map用户保存具有映射关系的数据,因此Map集合里保存着两组数,一组值用户保存Map里的key,另一组值用户保存Map里的value,key和value都可以是任何引用类型的数据。Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。

注意:LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。其结构图如下:

  • Java集合和数组的区别:
    1.数组长度在初始化时指定,意味着只能保存定长的数据。而集合可以保存数量不确定的数据。同时可以保存具有映射关系的数据(即关联数组,键值对 key-value)。
    2.数组元素即可以是基本类型的值,也可以是对象。集合里只能保存对象(实际上只是保存对象的引用变量),基本数据类型的变量要转换成对应的包装类才能放入集合类中。
  • Map集合与Set集合、List集合的关系
    1.与Set集合的关系
    如果把Map里的所有key放在一起看,它们就组成了一个Set集合(所有的key没有顺序,key与key之间不能重复),实际上Map确实包含了一个keySet()方法,用户返回Map里所有key组成的Set集合。
    2.与List集合的关系
    如果把Map里的所有value放在一起来看,它们又非常类似于一个List:元素与元素之间可以重复,每个元素可以根据索引来查找,只是Map中索引不再使用整数值,而是以另外一个对象作为索引。

二、Collections

java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。该类不能实例化,就像一个工具类,服务于Java的Collection框架。以下Java代码使用工具类collections实现排序功能,当然还有很多其他功能

public class TestCollections {  public static void main(String args[]) {  //注意List是实现Collection接口的  List list = new ArrayList();  double array[] = {11,2,323,56,231,54,-3,-5};  for (int i = 0; i < array.length; i++) {  list.add(new Double(array[i]));  } //使用工具类中的静态方法进行排序Collections.sort(list); //输出结果,可看见得到排序的结果for (int i = 0; i < array.length; i++) {  System.out.println(list.get(i));  }  }
}
  • collections类主要方法有以下:
    排序(主要用于List接口)

    查找替换(主要用于collection接口)

    同步:Collections工具类中提供了多个synchronizedXxx方法,该方法返回指定集合对象对应的同步对象,从而解决多线程并发访问集合时线程的安全问题。HashSet、ArrayList、HashMap都是线程不安全的,如果需要考虑同步,则使用这些方法。这些方法主要有:synchronizedSet、synchronizedSortedSet、synchronizedList、synchronizedMap、synchronizedSortedMap。

    本文参考1
    本文参考2

Java的Map接口,以及Collection和Collections的区别相关推荐

  1. HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别...

    面试题: 1.HashMap和Hashtable的区别?HashMap:线程不安全,效率高,键和值都允许null值Hashtable:线程安全,效率低,键和值都不允许null值ArrayList代替V ...

  2. java集合类根接口:Collection和Map

    本文转载自:https://www.cnblogs.com/yeya/p/9955499.html 前言 在前文中我们了解了几种常见的数据结构,这些数据结构有着各自的应用场景,并且被广泛的应用于编程语 ...

  3. Java基础 集合(Collection)结构详解 Collection和Collections的区别

    Collection是Java自带的核心集合类,它主要在java.util包下,下面主要给出常用的Java集合框架,如图: 以上就是我们比较常用的集合类,从源码中我们可以看到List.Set继承了Co ...

  4. Java之集合框架图及 Collection和Collections的区别及用法总结

    Java中Collection和Collections的区别: 1.Java集合框架图: 2.Collection接口: java.util.Collection是一个集合接口,其中定义了对集合对象有 ...

  5. Java API —— Map接口

    1.Map接口概述 · 将键映射到值的对象 · 一个映射不能包含重复的键 · 每个键最多只能映射到一个值 2.Map接口和Collection接口的不同 ·  Map是双列的:Collection是单 ...

  6. java的Map接口

    java的Set接口 文章目录 java的Map接口 Map的创建 Map的常用方法 Map的遍历 Map的练习 java的Map接口 Map接口存储的是一组键值对象,提供的是key到value的映射 ...

  7. Java中Map接口及实现

    Map接口及实现:   1. Map接口   Map是从键到值的映射,键不允许重复,每个键最多能映射一个值. public interface Map<K,V> {     // Quer ...

  8. Java中Collection与Collections的区别

    Collection与Collections的根本区别是: 1.Collection 是一个集合接口.它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体 ...

  9. Java集合——Map接口学习总结

    一.HashMap实现类 1.常用方法 增加:put(K key, V value)删除:clear() remove(Object key)修改:查看:entrySet() get(Object k ...

最新文章

  1. dataframe如何理解df[df[‘type‘]==‘xType‘]
  2. keras 以图搜图
  3. 利用django中间件CsrfViewMiddleware防止csrf攻击
  4. OpenGL 几何着色器细分的实例
  5. python打卡记录去重_python中对list去重的多种方法
  6. 分享实录 | 单人开发场景下的测试环境实践
  7. es6 --- Proxy的属性(get、set除外)
  8. gradle 转 maven
  9. sql怎么读_大白话讲解脏写、脏读、不可重复读和幻读
  10. 向量归一化的matlab程序,向量X的归一化及其Matlab简单示例
  11. python main函数
  12. 平衡二叉树(AVL树)和红黑树区别
  13. java 代码段 执行超时 抛异常_深入理解Java线程状态
  14. python,pygame下载与安装详细步骤
  15. vue3 reactive 对比 react useState 以及 ramda 和 lodash 的取舍问题
  16. 西数推出首款SanDisk驱动器:蓝盘和绿盘
  17. 程序员为什么一定要学好数学?驻足听一下“老人言”
  18. 在VMware上搭建iPhone开发环境(转)
  19. 公钥加密、数字签名、消息认证
  20. 面试金典12(Python)—— 删除中间节点(简单)

热门文章

  1. 第2课第3节_Java面向对象编程_继承性_P【学习笔记】
  2. 2019春第四周作业软件
  3. BZOJ5102 POI2018Prawnicy(堆)
  4. qt 利用 HTML 生成PDF文档,不能显示jpg图片
  5. [luoguP1773] 符文之语_NOI导刊2010提高(02)(DP)
  6. 1 Orchard 入门篇-Orchard 基本概念
  7. (转)在Total Commander下使用SVN
  8. Linux服务器与windows本地之间的数据同步
  9. Android图片适应屏幕大小
  10. 第一部分:TCL基本知识