java Collection和Map接口的区别

2023-11-05

一、Collection接口
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。

JavaSDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。

Collection 接口的接口 对象的集合(单列集合)
├——-List 接口:元素按进入先后有序保存,可重复
│—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全
│—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全
│—————-└ Vector 接口实现类 数组, 同步, 线程安全
│ ———————-└ Stack 是Vector类的实现类
└——-Set 接口: 仅接收一次,不可重复,并做内部排序
├—————-└HashSet 使用hash表(数组)存储元素
│————————└ LinkedHashSet 链表维护元素的插入次序
└ —————-TreeSet 底层实现为二叉树,元素排好序
 

public class PracticeCollection {

    /**
	 * 向集合中插入重复的值
	 * @return
	 */
	public static ArrayList<String> makeList(){
		ArrayList<String> testList=new ArrayList<>();
		testList.add("tfq");
		testList.add("tfq");
		testList.add("tfq");
		testList.add("tfq1");
		testList.add("tfq1");
		return testList;
	}

	/**
	 * 不能存入重复的值到Set
	 * @return
	 */
	public static Set<String> makeSet(){
		Set<String> testList=new HashSet<>();
		testList.add("tfq");
		testList.add("tfq");
		testList.add("tfq");
		testList.add("tfq1");
		testList.add("tfq1");
		return testList;
	}


    public static void main(String[] args) {
		System.out.println("ArrayList打印:------>");
		makeList().stream().forEach(x->{
			System.out.println(x);
		});

		System.out.println("HashSet打印:------>");
		makeSet().stream().forEach(x->{
			System.out.println(x);
		});

	}

}
public class PracticMap {

	/**
	 * 接口实现类 ,没有同步, 线程不安全,通过Collections工具类解决集合类HashMap线程不安全问题
	 *
	 * @return
	 */
	public static Map<String, String> makeHashMap() {
		Map<String, String> map = Collections.synchronizedMap(new HashMap<>());
		//模拟30个线程,往HashMap集合中添加数据
		for(int i = 1; i <= 30; i++) {
			new Thread(() -> {
				map.put(Thread.currentThread()
					.getName(), UUID.randomUUID()
					.toString()
					.substring(0, 8));
				System.out.println(map);
			}).start();
		}
		return map;
	}

	/**
	 * 通过JUC包下的并发集合类解决HashMap线程不安全问题,jdk1.8 API中的并发集合类截图如下
	 * @return
	 */
	public static Map<String, String> makeConcurrentHashMap() {
		Map<String, String> map =new ConcurrentHashMap<>();
		//模拟30个线程,往HashMap集合中添加数据
		for(int i = 1; i <= 30; i++) {
			new Thread(() -> {
				map.put(Thread.currentThread()
					.getName(), UUID.randomUUID()
					.toString()
					.substring(0, 8));
				System.out.println(map);
			}).start();
		}
		return map;
	}


	public static void main(String[] args) {
		makeConcurrentHashMap();
	}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java Collection和Map接口的区别 的相关文章

随机推荐

  • android查看app是platform_app,system_app还是priv_app

    untrusted app 第三方app 没有Android平台签名 没有system权限 platform app 有android平台签名 没有system权限 system app 有android平台签名和system权限 从上面划
  • Windows10下载安装openjdk11及配置环境变量

    Windows10下载安装openjdk11及配置环境变量 下载JDK 首先我们需要下载java开发工具包JDK 下载地址 https cn azul com downloads zulu community version java 11
  • UE4外包团队:更新一下UE4和Unity3D案例

    全部的贴图都是用出的法线贴图构建的话只用了阳光和天光 都是静态光源 视角是第一人称模板最后的效果嘛就是全4K 120帧 0错误0警告 场景小是小了点但是效果还不错 工作活有时间更新 欢迎有UE4和Unity项目外包的联系我们 谢谢 转载于
  • CNN卷积核

    接着呢 我们需要处理我们的xs 把xs的形状变成 1 28 28 1 1代表先不考虑输入的图片例子多少这个维度 后面的1是channel的数量 因为我们输入的图片是黑白的 因此channel是1 例如如果是RGB图像 那么channel就是
  • Kafka - a simple consumer demo - c++

    Kafka 如果有 kafka 基础的同学可以不用看前面的废话 可以从第五条 配置 开始看起 代码在第七条 前言 官网比我这标准多了 官网跳转 大家可以先完成quickStart部分kafka单机生产消费 一 概念简介 Kafka 是一个分
  • 谷歌语法(详解+举例)

    一 谷歌语法是什么 谷歌语法就是利用搜索引擎在渗透测试过程搜索到特定页面的一种语法 二 如何利用谷歌语法 谷歌语法基础的符号 xxx 将要搜索的关键字用引号括起来 表示完全匹配 即关键词不能分开 顺序也不能变 例如 腾讯课堂如果不加 的话
  • 内存时延效能

    时延 Latency 小张一看到这个图 不禁大叫 太复杂了 看得我都犯密集恐惧症了 看不懂 没关系 我们拆开了一个个看 1 CL CAS Latency CL是指CAS发出之后 仍要经过一定的时间才能有数据输出 从CAS与读取命令发出到第一
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • 在云服务器存储数据的10个好处

    本文编辑 富哥 云服务器已经成为最适合在线存储数据的选项 在较早时期 大多数公司依靠内部服务器来存储他们不断增长的数据和在线文件 但今天将数据存储在在线的云服务器中已经成为新的趋势 因为它允许无限存储 将所有数据存储在云中最好的方面是确保可
  • Java中类的构成

    Java中的每个类一般包含属性 构造器 块 方法 内部类五部分 属性 用来定义对象的数据 构造器 构造器也是方法 每一个类中都一定会有构造器 包含有参构造器和无参构造器每一个对象在创建的时候都会调用构造器 如果没有构造器 系统将提供一个默认
  • 十大经典排序算法总结

    https blog csdn net hellozhxy article details 79911867
  • AI嵌入式全景:各厂商、系列和开发工具的综合概览

    要看几个方面 1 算力 2 支持何种模型 3 是否支持可视化的窗口系统 一般而言各个平台均采用linux操作系统 官方提供对应SDK 安装好后可使用硬件加速资源 而且如果要使用其硬件加速 一般都要完成模型转换 将模型转为该平台所特有的格式
  • Spring Boot 学习研究笔记(十) -SpringBoot JAP 踩坑总结

    SpringBoot JAP 踩坑总结 一 JSON 字段映射处理流程 1 实现类型转换接口 package com call show common utils import com fasterxml jackson core Json
  • 最简单的鼠标放置悬停显示省略的内容,为标签的title赋值

    翻了一下午没看到能看懂的代码 对于我这个后台开发实在天书一般 原始需求为 内容过长显示为省略号 鼠标放置时再将全部内容悬浮展示出来 内容是放置在p标签中的 设置一下style即可 注意这四个属性缺一不可 p style width 100
  • 雪花算法记录

    引子 伴随着业务的日渐庞大 单库单表的数据库可能无法支持业务的读写 需要对数据库进行分库分表 原来数据库中 通常使用自增id的方式生成主键 分库分表之后 如果仍然采用原来的方式 在多个表之间主键会发生重复 分库分表后 如何保证多张表中的 i
  • webpack5+mockjs

    上篇提到升级 vue cli 5 0 1后 发现webpack 是v5 之前配置devServer after异常 于是认真看了一下文档 webpack v5文档 v5的devServer去掉了get和after 添加了setupMiddl
  • 日期的生成

    获取系统当前时间 日期类型为timestamp 日期格式为2010 11 04 16 19 42 方法1 Timestamp d new Timestamp System currentTimeMillis 方法2 Date date ne
  • 实对称矩阵的性质_今天行列式的矩阵是一个实对称矩阵, 主对角线是同一个元素, 其余位置是另一元素。该矩阵的行列式有相当好的性质, 同学们要加以记忆...

    行列式计算 5 01 前言 1 今天我们继续讨论特殊行列式的计算思路与方法 今天这组题的行列式的矩阵是一个实对称矩阵 主对角线是同一个元素 其余位置是另一元素 该矩阵的行列式有相当好的性质 需要同学们加以记忆 2 第1题 第一个行列式的计算
  • MyBatis - 14 - 分页插件的配置及使用

    文章目录 1 分页插件配置 1 在pom xml中添加依赖 2 在MyBatis的核心配置文件中配置插件 2 分页插件的使用 回顾Mysql分页功能 MyBatis分页插件的使用 测试显示第1页 每页显示4条数据 打印page对象 测试获取
  • java Collection和Map接口的区别

    一 Collection接口 Collection是最基本的集合接口 一个Collection代表一组Object 即Collection的元素 Elements 一些Collection允许相同的元素而另一些不行 一些能排序而另一些不行