![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java集合
五山口老法师
腾讯后台开发工程师
展开
-
数组:s.length()与s.length的区别
s.length是针对java中数组的,length是数组的一个属性,用来表示数组的长度s.length()则是字符串的一个方法,用来返回字符串的长度的字符串是没有length属性的,只有length()方法数组有length属性,而没有length()方法...原创 2018-12-27 01:40:01 · 11402 阅读 · 0 评论 -
ArrayList:获取最大元素?获取最大元素索引?
ArrayList<Integer> list = new Arraylist<Integer>();ArrayList获取最大元素?int maxElement = Collections.max(list);ArrayList获取最大元素索引?//此处注意,当list为空时,会抛出空指针异常,因此需要先进行list是否为空的判断int indexOf...原创 2019-02-17 22:29:48 · 13025 阅读 · 0 评论 -
Collections.sort()自定义排序方式
Java中Collections.sort()的使用!在日常开发中,很多时候都需要对一些数据进行排序的操作。然而那些数据一般都是放在一个集合中如:Map ,Set ,List 等集合中。他们都提共了一个排序方法 sort(),要对数据排序直接使用这个方法就行,但是要保证集合中的对象是 可比较的。怎么让一个对象是 可比较的,那就需要该对象实现 Comparable<T> 接口啦...原创 2019-02-17 23:23:23 · 5739 阅读 · 0 评论 -
Java中 String的反转
先将String转化为char数组String s = "www.runoob.com";char [] c = s.toCharArray();然后自定义反转函数: //完成翻转功能 private void reverse(char[] c,int begin,int end){ while(begin<end){ char tem...原创 2019-02-18 17:42:00 · 669 阅读 · 0 评论 -
Java集合:HashMap
各种Map总结 就比如问你HashMap 是不是有序的?你回答不是有序的。 那面试官就会可能继续问你,有没有有序的Map实现类呢?你如果这个时候说不知道的话,那这块问题就到此结束了。如果你说有 TreeMap 和 LinkedHashMap。 那么面试官接下来就可能会问你,TreeMap 和 LinkedHashMap 是如何保证它的顺序的?如果你回答不上来,那么到...原创 2019-02-18 17:52:33 · 269 阅读 · 0 评论 -
Java集合:ArrayList和LinkedList区别?
ArrayList和LinkedList的大致区别如下:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 Arra...原创 2019-02-25 19:04:47 · 347 阅读 · 0 评论 -
Java集合:Collection和Map
Collection是Java集合的一个接口,其实现类有Set、List等;Collections是集合的工具类,提供了一系列的静态方法,如排序、搜索等;说说collection里面有什么子类。(其实面试的时候听到这个问题的时候,你要知道,面试官是想考察List,Set)list和set是实现了collection接口;List是有序集合、Set是无序集合。List:1.可以允...原创 2019-03-10 22:07:41 · 158 阅读 · 0 评论 -
Java集合:set的遍历方式
对 set 的遍历 1.迭代遍历: Set<String> set = new HashSet<String>(); Iterator<String> it = set.iterator(); while (it.hasNext()) { String str = it.next(); System.out.println...原创 2019-03-20 16:11:55 · 917 阅读 · 0 评论 -
Java集合:Integer.parseInt() && String.substring()
原创 2019-03-20 16:23:27 · 938 阅读 · 0 评论 -
Java集合:Hashtable源码分析
1. 概述上次讨论了HashMap的结构,原理和实现,本文来对Map家族的另外一个常用集合HashTable进行介绍。HashTable和HashMap两种集合非常相似,经常被各种面试官问到两者的区别。对于两者的区别,主要有以下几点:HashMap是非同步的,没有对读写等操作进行锁保护,所以是线程不安全的,在多线程场景下会出现数据不一致的问题。而HashTable是同步的,所有的读...原创 2019-03-23 11:25:35 · 120 阅读 · 0 评论 -
java集合:LinkedList
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。LinkedList类是双向链表,单向队列,双向队列,栈的实现类: LinkedList类实现单向队列和双向队列的接口,自身提高了栈操作的方法,链表操作的方法.在LinkedList类中存在很多方法...原创 2019-02-16 16:50:51 · 198 阅读 · 0 评论 -
Java:四种取整的方法
java 中取整操作提供了四种方法:分别是: public static double ceil(double a)//向上取整 第一种:ceil是天花板的意思,表示向上取整。 测试: System.out.println(Math.ceil(1.01));System.out.println(Math.ceil(-1.01))...原创 2019-02-07 08:58:30 · 3245 阅读 · 0 评论 -
Queue:poll、offer、element、peek
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。在java5中新增...原创 2019-01-18 11:11:43 · 29346 阅读 · 0 评论 -
String为什么是不可变类型?
什么是不可变对象?众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。 区分对象和对象的引用对于Java初学者...原创 2019-01-13 22:49:07 · 902 阅读 · 2 评论 -
多线程:Vector是线程安全的吗
线程安全,在java的多并发编程中是重要概念,意思是,多个线程同时操作一个对象,在各种不同情况下,都不会造成不同的后果。一个经典问题,Vector到底是不是线程安全的? 很多人都会回答,是,vector是线程安全的。诚然,不止是很多IT教材上是这么写的,就连JDK的作者写的注释也是这么说的。如下图(图为 JDK中Vector的源代码):注释中,红框标记的部分写着:如果你不需要线程安...原创 2019-01-14 17:06:18 · 3448 阅读 · 0 评论 -
Stack:peek、pop、push、search
Java Stack 类栈是Vector的一个子类,它实现了一个标准的后进先出的栈。堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。 除了由Vector定义的所有方法,自己也定义了一些方法:序号 方法描述 1 boolean empty() 测试堆栈是否为空。 2 Object p...原创 2019-01-22 00:52:10 · 1642 阅读 · 0 评论 -
Java集合:JDK7与JDK8中HashMap的实现
JDK7中的HashMapHashMap底层维护一个数组,数组中的每一项都是一个Entrytransient Entry<K,V>[] table;我们向 HashMap 中所放置的对象实际上是存储在该数组当中; 而Map中的key,value则以Entry的形式存放在数组中static class Entry<K,V> implements Map...原创 2019-02-21 13:32:03 · 177 阅读 · 0 评论 -
Java集合:HashMap线程不安全?有哪些表现?
HashMap是线程不安全的!主要表现在多线程情况下:1)hash冲突时,put方法不是同步的,先存的值会被后存的值覆盖。(1.7和1.8都有的表现)2)在resize的时候,可能会导致死循环(环形链表)(仅1.7会有的表现,因为其头插法导致)让我们先来了解一下HashMap的底层存储结构,HashMap底层是一个Entry数组,一旦发生Hash冲突的的时候,HashMap采用拉链法解...原创 2019-02-21 15:49:06 · 1548 阅读 · 0 评论 -
Java集合:ConcurrentHashMap(JDK 1.7 & JDK 1.8)
ConcurrentHashMap(JDK 1.7) HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是ConcurrentHashMap所使用的锁分段技术,...原创 2019-02-21 17:38:51 · 580 阅读 · 0 评论 -
java集合:ArrayList
一、ArrayList的遍历方式ArrayList是List接口的实现类。ArrayList的遍历方式较多主要有通过下标遍历和叠加器遍历。如下List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); //方法1 ...原创 2019-02-16 15:16:08 · 177 阅读 · 0 评论 -
Java集合:数组的使用
Java中对Array数组的常用操作目录:声明数组; 初始化数组; 查看数组长度; 遍历数组; int数组转成string数组; 从array中创建arraylist; 数组中是否包含某一个值; 将数组转成set集合; 将数组转成list集合; Arrays.fill()填充数组; 数组排序; 复制数组; 比较两个数组; 去重复; 查询数组中的最大值和最小值;...原创 2019-02-16 16:15:04 · 102 阅读 · 0 评论 -
Java集合:List转数组互转
一、List转数组:#1List<String> strList = new ArrayList<String>();strList.add("aa");strList.add("bb");String[] array = strList.toArray(new String[strList.size()]);#2 直接遍历List将元素逐个添...原创 2019-08-27 09:39:34 · 547 阅读 · 0 评论