Java修炼之路——基础篇——Java集合类详解2

Set和List区别?Set如何保证元素不重复?
Set、List都实现了Collection接口,List是有序的列表,Set是无序的集合(TreeSet有序)

List实现类:

  • ArrayList :基于数组,可动态扩容
  • LinkedList:基于双向链表,可做堆栈使用
  • Vector:基于数组,基本相当于线程安全的ArrayList(基于synchronized),已被CopyOnWriteArrayList取代(基于ReentrantLock)
  • Stack:基于Vector实现,线程安全,先进后出(FILO,栈)

Set集合不会记住元素的顺序位置,不允许集合中有重复元素;
Set实现类:

  • HashSet:基于HashMap实现,允许null,
  • LinkedHashSet:基于LinkedHashMap实现,底层结构为哈希表结构+链表结构+红黑树
  • TreeSet:有序,基于TreeMap,红黑树

其他参见:https://blog.csdn.net/zhaohong_bo/article/details/87969753
具体见源码

Java 8 中 stream 相关用法
Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。通常编写并行代码很难而且容易出错, 但使用 Stream API 无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。所以说,Java 8 中首次出现的 java.util.stream 是一个函数式语言+多核时代综合影响的产物。
参见博客:https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/

apache 集合处理工具类的使用
Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。
详见:https://www.cnblogs.com/crazylqy/p/4872236.html

不同版本的 JDK 中 HashMap 的实现的区别以及原因
jdk 1.8 HashMap做了优化,引入了红黑树
详见:https://blog.csdn.net/vking_wang/article/details/14166593

Collection 和 Collections 区别
java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。

Arrays.asList 获得的 List 使用时需要注意什么
参见博文:https://blog.csdn.net/kusedexingfu/article/details/77824189

Enumeration 和 Iterator 区别
JavaDoc:在Java集合框架中,Iterator是用来替代Enumeration 的。
Iterator支持删除元素,并且方法命名完善了下

Enumeration 
boolean hasMoreElements();
E nextElement();
Iterator
boolean hasNext();
E next();
void remove();

2) Iterator支持fail-fast机制,而Enumeration不支持

fail-fast 和 fail-safe
fail-fast:
当使用迭代器迭代一个集合的时候,如果有另外的线程在修改这个集合,那么很可能会抛出ConcurrentModification异常,java.util下的都是快速失败
fail-safe:
当使用迭代器迭代一个集合的时候,先对集合进行一次拷贝,所以其他线程更改集合元素不会影响本次迭代
详见:https://blog.csdn.net/u010889616/article/details/79954413

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Legacy(线段树优化建边跑Dijkstra)

Legacy 线段树优化建边,开两颗线段树: 对于线段树1,自顶向下连边。对于线段树2,自底向上连边。 然后对于op1我们直接连边即可。 对于op2(u -> [l, r] cost w),这个操作在线段树1上完成即可…

P5273 【模板】多项式幂函数 (加强版)

P5273 【模板】多项式幂函数 (加强版) 这道题和原来的题目唯一区别就在于这道题没有限制F[0]1,所以我们就不能直接取ln了,但是我们实际上有办法转换一下,让它最低次项为1,只需要除以最后一个非0项即可,然后最后再乘回…

给 asp.net core 写个中间件来记录接口耗时

给 asp.net core 写个中间件来记录接口耗时Intro写接口的难免会遇到别人说接口比较慢,到底慢多少,一个接口服务器处理究竟花了多长时间,如果能有具体的数字来记录每个接口耗时多少,别人再说接口慢的时候看一下接口耗时统计&#x…

2019-03-1-算法-进化(整数转罗马数字)

题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M …

brz的函数(mobius)

brz的函数 ∑i1n∑j1nμ(ij)假设i,j不互质,一定有μ(ij)0所以上式∑i1n∑j1nμ(ij)[gcd(i,j)1]积性函数性质有μ(ij)μ(i)μ(j)∑i1n∑j1nμ(i)μ(j)[gcd(i,j)1]∑i1n∑j1nμ(i)μ(j)∑d∣gcd(i,j)μ(d)这里我们按照套路把d给提前去,因为i,j都要是d的倍数…

CF1251F Red-White Fence(多项式/背包问题/组合数学)

CF1251F Red-White Fence 现在给出了n个白板,m个红板,然后将其按照题目要求放成一排,要求最终周长为qi的方案数。 首先因为有高度的单调性,所以我们可以直接把周长转化为红板的高度和白板的数量,然后因为红板数量很少…

Java修炼之路——基础篇——枚举

枚举的用法 每个枚举变量其实都是枚举类的一个实例。 枚举与单例 各种模式的单例模式,包括枚举实现的单例 //懒汉模式 class SingletonA {private static SingletonA instance new SingletonA();//保证不能通过new SingletonB的方式创建对象private SingletonA()…

Docker(二)-在Docker中部署Nginx实现负载均衡【完整教程】

一、前言【查看完整视频教程(免费),请拉直文尾】在前面的文章中我们已经介绍了如何在Centos7系统中安装Docker以及利用Docker进行Asp.Net Core应用的部署。在本文中,我们将继续介绍利用Docker部署Nginx服务实现负载均衡。文章最后…

HDU 6127 Hard challenge(极角 + 二分)

Hard challenge 思路 通过极角排序,这里通过修改后,所有点的角度在[0,2π)[0, 2 \pi)[0,2π)之间, 然后O(n)O(n)O(n)扫一趟,对当前在的级角加上π\piπ就是我们要找的角度了,这里通过二分来实现查找。 接下来就只要…

P2664 树上游戏(点分治/计数题计算贡献/树上差分)

P2664 树上游戏 对于树上n个点,每个点有不同颜色,求解每个点到其他点的路径上不同颜色个数之和。 首先看到这种树上点对问题,我们可以想到点分治,然后考虑每次分治如何求解答案,本质上就是一个数颜色的问题&#xff…

2019-03-4-算法-进化(罗马数字转整数)

题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000例如…

设置ABP默认使用中文

ABP提供的启动模板, 默认使用是英文:虽然可以通过右上角的菜单切换成中文, 但是对于国内项目来说, 默认使用中文是很正常的需求.前期准备使用ABP CLI创建一个名为AbpStudy的ASP.NET MVC项目:abp new AbpStudy关于MVC的启动模板可以看文档, 这里就不赘述.使用ABP版本的是当前最新…

P3835 【模板】可持久化平衡树

P3835 【模板】可持久化平衡树 好久没有打平衡树了,赶紧来复习一下,平衡树这种东西还是很有用的,可以很灵活地解决一些问题。 fhq_treap 这道题是可持久化的权值平衡树,支持以下几个操作 1、 插入 xxx 2、 删除 xxx&#xff08…

基础篇--Java IO--概览

字符流、字节流、输入流、输出流 Java 中使用IO(输入输出)来读取和写入,读写磁盘文件、内存、网络数据。输入输出是相对内存而言,往内存中读数据就为输入流,从内存中往外写就是输出流。 根据处理类型分为字符流、字节…

半平面交练习(计算几何)

四&#xff1a;半平面交 Rotating Scoreboard /*Author : lifehappy */ #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <vector> #include <iostream>using namespace std;const double pi ac…

.NET轻松写博客园爬虫

爬虫&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取网站的程序或者脚本。.NET写爬虫非常简单&#xff0c;并能轻松优化性能。今天我将分享一段简短的代码&#xff0c;爬出博客园前200页精华内容&#xff0c;然后通过微小的改动&#xff0c;将代码升级为多线程爬虫&am…

P5055 【模板】可持久化文艺平衡树

P5055 【模板】可持久化文艺平衡树 突然发现fhq_treap也是可以支持区间翻转的&#xff0c;所以基本上和其他平衡树是一样的&#xff0c;而且还满足重量平衡树的性质&#xff0c;真是太优秀了&#xff0c;只不过常数稍微比较大。 然后这里我们变成了一颗区间平衡树&#xff0c…

kettle同步数据中文乱码问题解决

最近在使用kettle进行数据同步的时候&#xff0c;发现同步来的中文数据产生了乱码。试了下网上的解决方案&#xff0c;最终解决了这个问题。步骤如下&#xff1a; 1&#xff1a;kettle中配置源数据库、目标数据库编码 2&#xff1a;编辑“表输入”&#xff0c;去掉勾选“允许建…

WTM重磅更新,LayuiAdmin免费用 and more

从善如登&#xff0c;从恶如崩。对于一个开发人员来说&#xff0c;那就是做一个好的系统不容易&#xff0c;想搞砸一个系统很简单&#xff0c;删库跑路会还不会么。对于我们开源框架的作者来说&#xff0c;做一个好的框架就像登山&#xff08;也许是登天&#xff09;&#xff0…

Lady Layton with Math(杜教筛)

Lady Layton with Math ∑i1n∑j1nϕ(gcd(i,j))∑d1nϕ(d)∑i1n∑j1n[gcd(i,j)d]∑d1nϕ(d)∑i1nd∑j1nd[gcd(i,j)1]∑d1nϕ(d)(2∑i1nd∑j1i[gcd(i,j)1]−1)∑d1nϕ(d)(2∑i1ndϕ(i)−1)\sum_{i 1} ^{n} \sum_{j 1} ^{n} \phi(gcd(i, j))\\ \sum_{d 1} ^{n} \phi(d) \sum_{…