首页
关于
留言
Search
1
红米 AX3000 (AX6) 路由器解锁 SSH 教程
6,676 阅读
2
网盘挂载程序sharelist美化教程
4,216 阅读
3
小米路由器 AX3600 开启SSH教程,官方固件即可安装 ShellClash开启科学上网
2,168 阅读
4
Oracle 甲骨文 ARM VPS 自动抢购脚本
1,819 阅读
5
编译带PassWall和SSR-plus插件的Openwrt系统
1,393 阅读
前端
Vue
React
后端
Java
Python
PHP
数据库
运维
杂谈
小程序
影视资源
登录
Search
标签搜索
Java
Linux
Mysql
IDEA
Debian
Docker
Springboot
CentOS
Cloudflare
Maven
JavaScript
SQL
Wordpress
宝塔
Nginx
Windows
MacBook
JS
CSS
Openwrt
William
累计撰写
144
篇文章
累计收到
702
条评论
首页
栏目
前端
Vue
React
后端
Java
Python
PHP
数据库
运维
杂谈
小程序
影视资源
页面
关于
留言
搜索到
1
篇与
的结果
2021-08-02
Java集合框架
List,Set,Map三者的区别List :(对付顺序的好帮手)存储的元素是有序的,可重复的。Set :(注重独一无二的性质)存储的元素是无序的,不可重复的Map :(用key搜索的专家)使用键值对(key-value)存储,key是无序的、不可重复的、value是无序的、可重复的,每个键最多映射到一个值。如何选用集合?主要根据集合的特点来选,比如需要根据键值获取元素的值,就选用 Map 接口下的集合,需要排序就选 TreeMap,不需要排序就选 HashMap,要保证线程安全就选用 ConcurrentHashMap如果只是需要存放元素,那么可以选择实现 collection 接口的集合,需要保证元素唯一性时选择 Set 接口的集合比如 TreeSet或HashSet。不需要就选择实现 List 接口的比如 ArrayList 或 LinkedList,然后再根据实现这些接口的集合的特点进行选择。为什么要选用集合?当我们需要保存一组类型相同的数据的时候,我们应该用一个容器来保存,这个容器就是数组,但是,使用数组来存放对象有一定的弊端,因为在实际开发中,存储的数据的类型是多样的,于是,就出现了集合。集合也是用来存放多个数据的。数组的缺点是一旦声明了以后,长度就不可变了;同时,声明数组时确定的数据类型也决定了它存放的数据的数据类型;而且,数组存储的数据时有序的,可重复的,特点单一。但是集合提高了数据存储的灵活性,Java结合不仅可以用来存储不同类型不同数量的对象,还可以保存具有映射关系的数据。Arraylist与Vector的区别?Arraylist 是 List 的主要实现类,底层使用的是 Object[ ] 存储,适用于频繁的查找工作,线程不安全。Vector 是 List 的古老实现类,底层使用的是 Object[ ] 存储,线程是安全的 。Arraylist 与 LinkedList 区别?是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;关于底层数据结构:Arraylist 底层使用的是 Object 数组,Linkedlist 底层使用的是双向链表(jdk1.6之前是循环,jdk1.7后取消了)插入和删除是否受元素位置影响Arraylist 采用数组存储,所以插入和删除元素的时间复杂度都会收到元素位置的影响。比如,增加的时候 ArrayList 是默认加到列表尾部的,那这时候复杂度就是 O(1)。但如果是要在指定位置i进行插入或删除的话,那么时间复杂度就是O(n-i)。因为上述两个操作集合中的第i个和第i个元素之后的 (n-i) 个元素都要执行向后/向前移动一位的操作。LinkedList采用链表存储,所以,如果是在头部插入或者删除元素不受元素位置的影响,近似O(1),如果是在指定位置 i 插入和删除元素的话,时间复杂度近似 O(n),因为需要先移动到指定位置再插入。是否支持快速随机访问:LinkedList 不支持高效的随机元素访问,而 ArrayList 支持。快速随机访问就是通过元素的序号快速获取元素对象(对应于 get(int index) 方法)内存空间占用:ArrayList的空间浪费主要体现在list列表在结尾会预留一定的容量空间,而 Linkedlist 的空间花费主要体现在每个元素都要消耗比 Arraylist 更多的空间(因为要存放直接后继,直接前驱及数据)comparable 和 Comparator 的区别comparable 接口实际上是出自 java.lang 包 它有一个 compareTo(Object obj)方法用来排序comparator接口实际上是出自 java.util 包它有一个 compare(Object obj1, Object obj2) 方法用来排序无序性和不可重复性的含义是什么1、什么是无序性?无序性不等于随机性 ,无序性是指存储的数据在底层数组中并非按照数组索引的顺序添加 ,而是根据数据的哈希值决定的。2、什么是不可重复性?不可重复性是指添加的元素按照 equals()判断时 ,返回 false,需要同时重写 equals()方法和 HashCode()方法。将数组转换为ArrayListJava8的Stream方法(推荐)Integer[] myarray = {1,2,3}; List myList = Arrays.stream(myarray).collect(Collectors.toList()); // 基本类型也可以实现转换(依赖boxed的装箱操作) int[] myarray2 = {1,2,3} List myList = Arrays.stream(myarray2).boxed().collect(Collectors.toList());
2021年08月02日
13 阅读
0 评论
0 点赞