集合

集合系列

梦想与她 提交于 2020-03-18 01:26:48
某厂面试归来,发现自己落伍了!>>> 1、关于集合的两道面试题 先来看几道题目: 1、创建一个不可变的的集合: public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("Java"); set.add("JEE"); set.add("Spring"); set.add("Hibernate"); set = Collections.unmodifiableSet(set); set.add("Ajax"); // not allowed. } 可以看到,创建不可变集合主要是调用了Collections的unmodifiableSet()方法,而Collections类通过装饰模式实现了对一般集合的封装。 2、去除List集合中的重复元素,且保持原有的顺序 public static void main(String args[]) { List<String> list=new ArrayList(); list.add("A"); list.add("B"); list.add("C"); list.add("A"); // List中允许元素重复 for(int i=0;i<list.size();i++) System.out.print(" "

Java 性能调优指南之 Java 集合概览

我的未来我决定 提交于 2020-03-02 02:46:11
【编者按】本文作者为拥有十年金融软件开发经验的 Mikhail Vorontsov ,文章主要概览了所有标准 Java 集合类型。文章系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文: 本文将概览所有标准的 Java 集合类型。我们将按照它们可区分的属性与主要用例进行分类。除此之外,我们还将穷举在不同集合类型之间进行数据转换的方法。 ##数组(Arrays) 数组是 Java 语言内置的唯一集合类型,尤其擅长处理预先知道数量上限的元素集。java.util.Arrays 包含了许多用于处理数组的方法,列举如下: Arrays.asList ——将 array(数组) 转变为 List(列表),后者可以传值给其他标准的集合构造函数。 Arrays.binarySearch ——对有序数组或其分段进行快速查找。 Arrays.copyOf ——如果想在扩展数组的同时保存其内容,可调用该方法。 Arrays.copyOfRange ——如果需要拷贝整个数组或其分段,可调用该方法。 Arrays.deepEquals, Arrays.deepHashCode ——支持嵌套子数组的 Arrays.equals 或 Arrays.hashCode 版本。 Arrays.equals ——如果需要比较两个数组是否相等,可调用此方法(不可调用数组自身的 equals 方法,array

Struts2操作集合标签汇总

不想你离开。 提交于 2020-03-01 03:18:42
Iterator 标签主要用于对集合进行扫描,这里的集合包括数组、 List 、 Set 以及 Map 对象。 Iterator 标签包含如下 3 个属性。 Value :可选,该属性指定被迭代的集合。被迭代的集合通常使用 OGNL 表达式指定。若未指定 value 属性,则使用 ValueStack 栈顶的集合。 Id :可选,表示集合里的当前元素 Status :可选,该属性指定了集合的 IteratorStatus 对象,在迭代集合的每一个元素时都会有一个描述当前状态的 IteratorStatus 对象被放到 ValueStack 栈顶。通过 IteratorStatus 对象可以获取集合当前的各种状态信息,如当前集合元素的索引等。 Append 标签用于将多个集合合并成一个新集合。使用 append 标签时需要指定一个 id 属性,该属性指定一个新集合的名字。 Append 标签不仅可以合并同类型的集合对象,还可以将 map 对象和 list 对象进行合并。如果将 map 对象和 list 对象进行合并,将生成一个新的 map 对象, list 对象的元素将作为新 map 对象的 key ,而 value 为空。 <s:append id=”newList”> <s:param value=”{‘one’,’two’,’three’,’four’}”/> <s:param

Java中集合与数组之间的转化

我怕爱的太早我们不能终老 提交于 2020-02-29 17:50:29
一、集合转化为数组: 采用集合.toArray()方法,根据转化为数组的类型又可以分为: 1、转化为Object[]类型数组 比如: Object[] listArray = list.toArray(); Object[] setArray = set.toArray(); 2、转化为具体类型数组 比如: String[] listArray1 = (String[]) list.toArray( new String[0]) 或者: String[] listArray2 = (String[]) list.toArray ( new String[list.size()]); String[] setA rray1 = (String[]) set.toArray( new String[0]); 或者:String setA rray2 = (String[]) set.toArray ( new String[set.size()]); 3、 将List转换成数组 List list=new ArrayList(); list.add(1); list.add(2); list.add(3); Integer[] in=new Integer[list.size()]; in=(Integer[])list.toArray(in); for(int k=0;k<in

Redis研究-3.6 Redis 5种类型的基本使用2

ε祈祈猫儿з 提交于 2020-02-29 13:31:10
1.字符串 在Redis中,Redis将字符串当做三种类型来对待,一种是字节串,一种是整数,最后一种是浮点数。因此,针对不同的类型,Redis也有不同的操作,特别是针对后面两种类型,涉及到类型转换的时候,Redis会自动处理。 ** 1.1 整数类型操作** _1.1.1 incr_ 他的作用是在指定的key上进行加1操作特别的,如果在Redis中不存在这个key,那么,先在Redis中创建这个key,然后再执行加1操作。 操作: get redis_int 结果: (nil) 操作: incr redis_int 结果: (integer) 1 _1.1.2 incrby _ 他的作用是在指定的key上执行加法操作。 操作:incrby redis_int 2 结果:(integer) 4 操作:get redis_int 结果:"4" _1.1.3 decr_ 他的作用和incr相反。 操作:decr redis_int 结果:(integer) 3 操作:get redis_int 结果:"3" 操作:get redis_an 结果:(nil) 操作:decr redis_an 结果:(integer) -1 1.1.4 decrby 他的作用和incrby相反。这里就不举例啦。 1.2 字节串 _1.2.1 append_ 他的作用是在指定的key的尾部添加指定的子串

数据结构-08-集合(Set)-哈希表(Hash)-图(Map)

被刻印的时光 ゝ 提交于 2020-01-09 23:27:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ##Set Set 是一种用于保存 不重复元素 的数据结构。常被用作测试归属性,故其查找的性能十分重要。 Set 是python自带的基本数据结构, 有多种初始化方式。 Python的set跟dict的Implementation方式类似, 可以认为set是只有key的dict. s = set() s1 = {1, 2, 3} s.add('shaunwei') 'shaun' in s # return true s.remove('shaunwei') ##Map - 哈希表 Map 是一种 关联数组 的数据结构,也常被称为字典或键值对。 在 Python 中 dict(Map) 是一种基本的数据结构。 # map 在 python 中是一个keyword hash_map = {} # or dict() hash_map['shaun'] = 98 hash_map['wei'] = 99 exist = 'wei' in hash_map # check existence point = hash_map['shaun'] # get value by key point = hash_map.pop('shaun') # remove by key, return value keys =

Python的 解构 与 集合

匆匆过客 提交于 2019-12-21 11:26:05
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 解构与封装 一、解构 In [1]: x = 1 In [2]: y = 2 In [3]: x, y = y, x # Python 的解构 In [4]: print(x, y) 2 1 In [5]: lst = [1, 2] In [6]: first = lst[0] In [7]: second = lst[1] In [8]: first, second = lst In [9]: print(first, second) 1 2 In [10]: 解构:按元素顺序,把线性结构的元素,赋值给变量 二、封装 In [10]: t = 1, 2 In [11]: t Out[11]: (1, 2) In [12]: type(t) Out[12]: tuple In [13]: 封装:定义一个元组,可以忽略小括号,封装出来的一定是元组 In [21]: t = 1, 2 In [22]: t Out[22]: (1, 2) In [23]: t1 = 1, 2 In [24]: t2 = (1, 2) In [25]: t1 == t2 Out[25]: True In [26]: t1 is t2 Out[26]: False 三、Python3 中的解构变化 In [1]: lst = list

hashmap和hash算法研究

試著忘記壹切 提交于 2019-12-10 00:00:23
  总述   hashmap作为java中非常重要的数据结构,对于key-value类型的存储(缓存,临时映射表,。。。)等不可或缺,hashmap本身是非线程安全的,对于多线程条件下需要做竞争条件处理,可以通过Collections和ConcurrentHashmap来替代。   Hashmap源码探究   数据结构   hashmap存储数据主要是通过数组+链表实现的,通过将key的hashcode映射到数组的不同元素(桶,hash中的叫法),然后冲突的元素放入链表中。      链表结构(Entry)      采用静态内部类   存储操作      当存入的值为null的时候,操作会找到table [0] ,set key为null的值为新值   若果不是空值,则进行hash,   hash算法      可以看到,算法进行了二次hash,使高位也参与到计算中,防止低位不变造成的hash冲突   注:这一切的目的实际上都是为了使value尽量分布到不同的   对于任意给定的对象,只要它的 hashCode() 返回值相同,那么程序调用 hash(int h) 方法所计算得到的 hash 码值总是相同的。我们首先想到的就是把 hash 值对数组长度取模运算,这样一来,元素的分布相对来说是比较均匀的。但是,“模”运算的消耗还是比较大的,在 HashMap 中是这样做的:调用

Java 集合系列目录(Category)

若如初见. 提交于 2019-12-06 09:28:05
Java 集合系列目录(Category) 下面是最近总结的Java集合(JDK1.6.0_45)相关文章的目录。 01. Java 集合系列01之 总体框架 02. Java 集合系列02之 Collection架构 03. Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 04. Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法) 05. Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 06. Java 集合系列06之 Vector详细介绍(源码解析)和使用示例 07. Java 集合系列07之 Stack详细介绍(源码解析)和使用示例 08. Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析) 09. Java 集合系列09之 Map架构 10. Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例 11. Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例 12. Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例 13. Java 集合系列13之 WeakHashMap详细介绍(源码解析)和使用示例 14. Java 集合系列14之

LinkedList工作原理

我的未来我决定 提交于 2019-12-03 07:25:58
1.学习LinkedList的必要性 在 ArrayList工作原理 中,我们了解到ArrayList和LinkedList是List接口的两个重要实现。并且ArrayList是一个动态数组的实现。因此ArrayList在队列中插入和删除元素方面的性能有很大的缺陷(这是因为插入和删除元素时要确保ArrayList容量,消耗性能)。为了实现队列元素的快速插入和删除,我们来学习下LinkedList。 2.LinkedList简介 2.1 LinkedList定义 LinkedList是List接口的链表实现,是一个继承于AbstractSequentialList的双向链表。LinkedList类除了实现List接口外,还实现了Deque接口,为add、poll提供先进先出的队列操作,以及其他堆栈和双端队列操作。LinkedList和ArrayList一样都是非同步的。 2.2 LinkedList的数据结构如下: java.lang.Object ↳ java.util.AbstractCollection<E> ↳ java.util.AbstractList<E> ↳ java.util.AbstractSequentialList<E> ↳ java.util.LinkedList<E> public class LinkedList<E> extends