阿里巴巴开发手册——集合
阿里开发手册笔记:集合
1.ArrayList的sublist(form,to)
返回父list的一个视图,包含from不包含to,它是ArrayList的内部类,无法强制转换成ArrayList。
父子做出的非结构性更改(不含大小)会互相影响到彼此
当子list更改大小时,父list也会受到影响。父list修改大小时,子list失效,此时对子list的遍历、增加、删除会抛出
ConcurrentModificationException异常
删除list中的某部分:
list.subList(from, to).clear();
2.list转数组最好使用toArray(T[] array),传入的是类型完全一样的数组,且指定好大小
List<String> list = new ArrayList<String>(2);
list.add("guan");
list.add("bao");
String[] array = new String[list.size()];
array = list.toArray(array);
3.使用Array.asList()将数组转换集合时,不能使用集合修改方法(add、remove、clear),因为其返还的是Arrays内部类对象,不是util包中的集合对象,该方法是一个适配器模式,后台数据仍是原数组,原数组修改数据后转换后的list也会随之修改。
4.泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用add方 法,而<? super T>不能使用get方法,作为接口调用赋值时易出错。
说明:扩展说一下PECS(Producer Extends Consumer Super)原则:
第一、频繁往外读取内容的,适合用<? extends T>。
第二、经常往里插入的,适合用<? super T>。
原因看这里
5.不要再foreach方法中修改集合,修改使用迭代器,在多线程操作中要对迭代器加锁。详情参考https://www.cnblogs.com/luyu1993/p/7148765.html
6.集合初始化指定初始化大小,不确定设置为16(默认),避免多次扩容影响性能
7.使用entrySet而不是keySet,因为后者要遍历两次,前者只需要一次。
8.map存储null值情况:
9.有序性:遍历结果根据规则排列;稳定性:每次遍历元素次序一定
10.利用set去重
11.重写equals就要重写hashCode,同时如果对象需要存储在set或者用作Map key,也需要重写两者。
参考:
1.阿里巴巴开发手册
2.https://www.cnblogs.com/ljdblog/p/6251387.html
3.https://www.cnblogs.com/luyu1993/p/7148765.html
4.https://www.cnblogs.com/lucky_dai/p/5485421.html
阿里巴巴开发手册——集合相关推荐
- 全套阿里巴巴开发手册和大神解读一起给你【2022年整理】
前些日子查些资料想要看一下阿里巴巴开发手册,网上一搜出来了一大推,也搞不清楚哪个,更让人讨厌的是有很多介绍开发手册文章的是某些培训机构来吸引流量的,都能看得来的写文章的人根本不懂这些东西,最后放个二维 ...
- 阿里巴巴开发手册笔记-----数据库篇
阿里巴巴开发手册笔记 阿里开发团队发表的java开发规范,下面我在学习了之后做一个简单的总结.此篇为数据库篇. 数据库 (一)建表约定 1.表达是与否的概念的字段,必须使用is_xxx的方式来命名.数 ...
- 阿里巴巴开发手册笔记整理
长久以来,一直有一个愿望,就是自己能够遵循某种规范进行实践,或者说能找一个比较经得起实践的理论来指导. 直到我们老师给我们推荐了阿里巴巴开发手册,大概看了看目录,嗯 , 是我想要的.于是,这里就趁 ...
- 魔法值是什么?(为什么在阿里巴巴开发手册中提到不允许任何魔法值直接出现在代码中)
在阿里巴巴开发手册中,提到魔法值,是在最开始的常量定义中提到的.即如下图: 那么,魔法值究竟是什么? 在al手册中说是未经预先定义的常量. 其实这样说就已经很明了了,但毕竟是一个不常见的概念,所以我在 ...
- 包机制、阿里巴巴开发手册
公司域名倒置作为包名 com.baidu.www 阿里巴巴开发手册可百度搜索看看
- 关于阿里巴巴开发手册不得使用外键与级联,一切外键概念必须在应用层解决的疑惑
原文地址:http://www.codes51.com/itwd/4517194.html 问题: 关于阿里巴巴开发手册"不得使用外键与级联,一切外键概念必须在应用层解决"的疑惑 ...
- (阿里巴巴开发手册)为什么阿里巴巴推荐内部员工使用StringBuilder?
今日我在阅读阿里巴巴开发手册泰山版,发现开发手册上有这么一条:[推荐] 循环体内,字符串的连接方式,使用 StringBuilder 的 append 方法进行扩展. 字符串的三种表示类型 Strin ...
- Java阿里巴巴开发手册与JDK1.8API中文版下载
Java阿里巴巴开发手册 JDK1.8API中文版 链接:https://pan.baidu.com/s/1M3zp31KlRCXDXkBqHSUS6A 提取码:lcmc
- 阿里巴巴开发手册之应用分层
阿里巴巴开发手册自己所感 应用分层 总结:其实,对于*****的开放接口设计来说,manager层实在 业务逻辑层之上的,区别并不是很大,但是service 和 manager 可以互相转化 ,就数据 ...
最新文章
- 实验一个最小的PYTHON服务器编程
- 分数化小数 Fractions to Decimals
- P3714 [BJOI2017]树的难题(点分治/线段树/单调队列)
- 大数据全球战略布局全面升级
- C++面试题-指针-指针常量与常量指针
- 用python画漂亮图-大部分人都不知道-Python竟能画这么漂亮的花,帅呆了
- webpack + react
- 如何将 Apple Watch 用作闹钟?
- ActiveMQ 简介、安装、与 Maven 项目基本使用
- Android ProGuard 还原堆栈
- c语言顺序表的初始化Status,数据结构(c语言版)顺序表的建立、初始化、插入、删除、遍历等12个基本操作及测试...
- win10永久设置护眼颜色
- 滴滴6月或发布造车计划;头部App上线一键关闭 “个性化推荐 ”​;下载捆绑,“高速下载”竟为元凶 | EA周报...
- Ubuntu16.04 + TITAN XP 深度学习服务器环境搭建(驱动安装,CUNN7.6.5, CUDA9.0) (避坑篇)
- jsonNode转化为jsonObject
- Ceph 认证授权和RBD块存储、对象存储使用(三)
- 家庭媒体中心解决方案(三、	群晖系列nas基本功能使用指南篇1)
- NFS 与 NAS 是什么关系
- 分享一个程序猿小白两年工作经验的职业之路
- Fedora21桌面美化
热门文章
- CakePHP快速入门
- linux配置指定ip访问指定端口号,操作系统linux和dos linux下通过iptables只允许指定ip地址访问指定端...
- VUE打包目录自定义
- 程序员小吴的 3 月份文章汇总和一个小福利
- 嵌入式研发精英培养计划课程体系-曹国辉-专题视频课程
- 物联网时代,物联感知技术将如何发展?
- html下拉框默认选中事件,如何默认触发select的选项上的onchange事件?
- 图解 macOS 下一步一步安装 Anaconda python 环境
- linux下fopen的路径怎么写,linux下fopen函数的使用
- 为微信公众号添加自动回复机器人