Iterator接口的remove方法将会删除上次调用next方法时返回的元素. next方法和remove方法的调用具有相互依赖性,如果调用remove方法前没有调用next方法是不合法的. 错误使用1: 如果想要删除集合中两个相邻的元素,不能直接这样调用: iterator.remove(); iterator.remove(); 必须在中间添加一个next方法的调用.…
如果对正在被迭代的集合进行结构上的改变(即对该集合使用add.remove或clear方法),那么迭代器就不再合法(并且在其后使用该迭代器将会有ConcurrentModificationException异常被抛出). 如果使用迭代器自己的remove方法,那么这个迭代器就仍然是合法的. package chapter1; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * Creat…
本篇博客主要讲解Map接口的4个实现类HashMap.Hashtable.LinkedHashMap.TreeMap的使用方法以及三者之间的区别. 注意:本文中代码使用的JDK版本为1.8.0_191 值得注意的是,Map接口是独立的接口,并没有继承Collection接口(这里是重点,面试常问): public interface Map<K,V> { ...... } 1. HashMap使用 HashMap是Map接口最常用的实现类,存储Key Value键值对,HashMap不保证元素…
1. 函数 函数就是一个非常灵活的运算逻辑,可以灵活的将函数传入方法中,前提是方法中接收的是类型一致的函数类型 函数式编程的好处:想要做什么就调用相应的方法(fliter.map.groupBy.sortBy),想要具体怎么做,就传入相应的函数 函数式编程的特点之一就是支持链式编程(不停的函数调用函数) 1.1 一种更加简洁的定义函数的方式(_) 以前的形式 简洁的形式  "_" 相当于一个占位符,将遍历出来的值赋给这个占位符 该占位符号出现两次,其会认为出现两个参数,由于此处就是一个…
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不一致,元素不可以重复 * (通过哈希值来判断是否是同一个对象) * ----HashSet:底层数据结构是哈希表, * 保证数据唯一性的方法是调用存入元素的hashCode()方法 * 和equals(Object obj)方法 * HashCode值相同,才会调用equals方法 * * */ import java.util.HashSet; import java.util.Iterator; public cla…
import java.util.*; /* 将自定义对象作为元素存到ArrayList集合中,并去除重复元素. 比如:存人对象.同姓名同年龄,视为同一个人.为重复元素. 思路: 1,对人描述,将数据封装进人对象. 2,定义容器,将人存入. 3,取出. List集合判断元素是否相同,依据是元素的equals方法. */ class Person { private String name; private int age; Person(String name,int age) { this.n…
导读:Map竟然不属于Java集合框架的子集?队列也和List一样属于集合的三大子集之一?更有队列的正确使用姿势,一起来看吧! Java中的集合通常指的是Collection下的三个集合框架List.Set.Queue和Map集合,Map并不属于Collection的子集,而是和它平行的顶级接口.Collection下的子集的关系如文章开头图片所示. 本文的重点将会围绕: 集合的使用.性能.线程安全.差异性.源码解读等几个方面进行介绍. 本文涉及的知识点,分为两部分: 第一部分,Collecti…
在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于Vector来说,用来添加和删除元素的方法是同步的.如果只有一个线程与Vector的实例交互,那么,要求获取和释放对象锁便是一种浪费,另外在不必要的时候如果滥用同步化,也有可能会带来死锁.因此,对于更改集合内容的方法,没有一个是同步化的.集合本质上是非多线程安全的,当多个线程与集合交互时,为了使它多线程安全,必须采取额外的措施. 在Collections类 中有多个静态方法,它们可以获取通过同步方法封装非同步集合…
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素.Collection是一次添加一个元素. iterator是迭代获取元素 第一大类:Iterator 迭代器是一个对象,它是遍历并选择序列中的对象. 说比了,就是给后面的Collection接口里的实现类使用搭配的,为了取值罢了.    Iterator 只能正向遍历集合,适用于获取移除元素. Li…
package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class Collections { public static void main(String[] args) { /* * 完成以下需求: *创建一个存储字符串的集合list,向list中添加以下字符串:”C++”.”Java”.” Python”.”大数据与云计算”. *遍…
  看了前两篇你肯定已经理解了 java 并发编程的低层构建.然而,在实际编程中,应该经可能的远离低层结构,毕竟太底层的东西用起来是比较容易出错的,特别是并发编程,既难以调试,也难以发现问题,我们还是使用由并发处理的专业人员实现的较高层次的结构要方便.安全得多. 阻塞队列   对于许多线程问题,都可以使用一个或多个队列来安全.优雅的进行数据的传递.比如经典的生产者--消费者问题,生产者不停的生成某些数据,消费者需要处理数据,在多线程环境中,如何安全的将数据从生产者线程传递到消费者线程?   无需…
建议16:易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP,Ruby,Groovy.Javascript等,这些入侵者都有一个共同特征:全是同一类语言-----脚本语言,它们都是在运行期解释执行的.为什么Java这种强编译型语言会需要这些脚本语言呢?那是因为脚本语言的三大特征,如下所示: 灵活:脚本语言一般都是动态类型,可以不用声明变量类型而直接使用,可以再运行期改变类型. 便捷:脚本语言是一种解释性语言,不需要编译成二进制代码,也不需要像Java一样生成字节码.它的…
atitit.  集合groupby 的实现(2)---自定义linq查询--java .net php 实现方式有如下 1. Linq的实现原理流程(ati总结) 1 2. groupby  与 事先排序 2 3. #----------聚合函数 2 4. 自定义linq查询Linq .from(li) .groupBy("url","user" ) .select("url", count().as("countx"), …
java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读懂的信息表达式,一般来说大部分的常见类都会重写这个方法.比如Collection会重写的该方法就会在集合前后加上[ ]中间的元素中间会加上.但是如果没有重写的话Object的默认的toString方法是返回:getClass().getName() + '@' + Integer.toHexStri…
Lambda语法 函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口.比如Java标准库中的java.lang.Runnable和java.util.Comparator都是典型的函数式接口.java 8提供 @FunctionalInterface作为注解,这个注解是非必须的,只要接口符合函数式接口的标准(即只包含一个方法的接口),虚拟机会自动判断,但 最好在接口上使用注解@FunctionalInt…
package com.bjpowernode.t01list; import java.util.ArrayList; /* * 向集合中添加自定义类型 */public class TestList04 { public static void main(String[] args) { ArrayList list = new ArrayList(); Student s1 = new Student("1001","jack",19); Student s2…
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算. sets 支持 x in set, len(set),和 for x in set.作为一个无序的集合,sets不记录元素位置或者插入点.因此,sets不支持 indexing, slicing, 或其它类序列(sequence-l…
java反射机制是什么 反射机制是在运行状态中,可以知道任何一个类的属性和方法,并且调用类的属性和方法: 反射机制能够做什么 1.判断运行对象的所属类 2.构造任意一个类的对象 3.获取任意一个类的属性和方法 4.调用任意属性和方法 5.生成动态代理 利用反射将结果集封装成为对象或者集合(实测可用) package coral.base.util; import java.beans.IntrospectionException; import java.beans.PropertyDescri…
工具类Arrays.asList()方法把数组转换成集合 不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException() 问题分析: 1.测试 被注释的三行可以分别解开注释,运行后确实出现了上述所说的异常 2.看源码 似乎没有问题.往下看 然而实际上我们点进到ArrayList发现,其实ArrayList并不是我们平时用的ArrayList.而是Arrays里面的一个内部类.而且这个内部类没有add,clear,remo…
Java反射的理解(六)-- 通过反射了解集合泛型的本质 上述写了那么多,我们可能会有个疑问,为什么要用反射,步骤比我们常规的加载类操作复杂多了,别急,这个问题我最后才解答,我们先来了解集合泛型的本质. 直接上代码: import java.lang.reflect.Method; import java.util.ArrayList; public class MethodDemo4 { public static void main(String[] args) { ArrayList li…
目录 有哪些集合类 Set类 Queue类 List类 Map类 HashMap的实现原理,是否线程安全,如何使其做到线程安全 HashMap的实现原理 HashMap的数据结构 HashMap的存取实现 解决hash冲突的办法 再散列rehash过程 HashMap的线程安全问题 本文主要参考: <疯狂Java讲义精简版>-李刚 HashMap实现原理分析 有哪些集合类 一图终结 Set,Queue和List都是继承了Collection,即大多数集合类的根接口.而Map则是单独的另一个接口…
Immutable(不可变)集合   一,概述 guava是google的一个库,弥补了java语音的很多方面的不足,很多在java8中已有实现,暂时不展开,Collections是jdk提供的一个工具类 Guava中不可变对象和Collections工具类的unmodifiableSet/List/Map/etc的区别: 当Collections创建的不可变集合的wrapper类改变的时候,不可变集合也会改变,而Guava的Immutable集合保证确实是不可变的. 1.jdk中实现immut…
最近重温了<Thinking in Java>,发现了一个让我为之兴奋的知识漏洞,必须得分享一下. 上一篇的<Java类初始化的过程>的随笔中,那个初始化顺序并不完整.初始化的实际过程是: 在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制的0: 如上一篇的<Java类初始化的过程>那样:父类的static成员变量和方法-->该类的static变量和方法-->开始实例化-->父类的普通成员变量和方法-->父类的构造方法-->该类的…
集合 List 知道索引顺序的集合,ArrayList.LinkedList.Vector三个子类实现了List接口   ArrayList ArrayList没有排序方法,可以用Collections.sort(ArrayList对象)进行排序,但是Collections.sort()里面的ArrayList必须是String类型的,否则无法通过编译,除非该类型也继承或实现了Comparable   LinkedList 针对经常插入或删除中间元素所涉及的高效率集合   Set 去重,独一无二…
paip.截取字符串byLastDot方法总结uapi python java php c# 总结 ========uapi   left_byLastDot   right_byLastDot 目前几乎所有的编程语言都没有这个api..都是根据last index dot ..在substring =======python def left_ByDot(char):       lastIndex=char.rindex(".")     pre=char[0:lastIndex+…
paip.函数方法回调机制跟java php python c++的实现 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax 5.73    方法函数回调 5.73.1    回调机制(同步调用.回调和异步调用.): 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步调用.   同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一…
Atitit.视频文件加密的方法大的总结 java c# php 1. 加密的算法  aes  3des  des xor等.1 2. 性能1 3. 解密1 4. 播放器的事件扩展1 5. 自定义格式1 1. 加密的算法  aes  3des  des xor等. Aes安全性最好... 2. 性能 可以只加密文件头走行兰.. 3. 解密 文件解密    内存解密... 可以播放以前解密...播放over再加密... 作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Ra…
Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等 1. 排序 语法:  Arrays.sort(数组名); 可以使用 sort( ) 方法实现对数组的排序,采用的方法是快速排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该数组的排序(按升序排列),如: 2. 将数组转换为字符串 语法:  Arrays.toString(数组名); 可以使用 toString( ) 方法将一个数…
将一个方法调用同一个方法主体关联起来,就是绑定. 绑定分两种 :前期绑定 和 后期绑定 . 绑定------------- | -----前期绑定-------编译期绑定 { static , final 方法 (private 方法属于final 方法):数据成员:} | |------后期绑定-------运行时绑定 { 普通的成员方法 :} 总结:对于方法来说, 除了static 和final 方法外, 其他的方法都是后期绑定. 编译时对引用只检查被声明的类型,而不看实际类型. 将某个方法…
Java中的大小写字母相互转换(不利用Java自带的方法) 1.设计源码 /** * * @title:UpperAndLower.java * @Package:com.you.utils * @Description:<h3>一句话描述功能</h3> * @author:游海东 * @date:2015-3-25下午10:30:52 * @version V1.0 * */ package com.you.utils; /** * * 项目名称:SSH * 类名称:UpperA…