在公司接触到Collections.unmodifiableList(List<? extends T> list)) 觉得用法挺特殊的,所以学习了下,简单而言,看名字就知道,将参数中的List返回一个不可修改的List. 觉得以下这篇文章写得很好,说 明了它的应用场景. -------------------------------------------------------------------------------------- 在<重构——改善既有代码的设计>一书中…
在文章:Mybatis源码解析,一步一步从浅入深(五):mapper节点的解析中mybatis的源码中用到了Collections.unmodifiableList方法,其实还有unmodifiableMap,unmodifiableSet两个相似的方法,接下来就分析一下. unmodifiableMap,unmodifiableList,unmodifiableSet都是Collections的静态方法.可以明显看到三个方法都是unmodifiable开始的. unmodifiable的中文意…
在<重构——改善既有代码的设计>一书中,有一种重构手法叫Encapsulate Collection(封装集群),为了演示该重构手法,我写了四个类,通过对比重构前后的代码,加深对这一重构手法的理解. 类Student有一ArrayList属性,如果没有阅读<重构——改善既有代码的设计>一书,很多人可能会像我一样,如下设计类Student.但是,如果通过Student.getCourses()获得对ArrayList属性引用后,就可以任意为Student对象添加“课程”,而Stude…
java对象中primitive类型变量可以通过不提供set方法保证不被修改,但对象的List成员在提供get方法后,就可以随意add.remove改变其结构,这不是希望的结果.网上看了下,发现Collections的静态方法unmodifiableList可以达到目的.方法原型为:public static <T> List<T> unmodifiableList(List<? extends T> list);用法也很简单,传入一个List实例la,返回这个list…
原文  http://www.cnblogs.com/persist-confident/p/4516741.html 今天阅读源码的时候,无意中看到了Collections.unmodifiableList的用法,因为以前没有这样做过,所以查询了他的API,是这样写的 public static <T> List<T> unmodifiableList(List<? extends T> list) 参数:list--这是一个不可修改视图是要返回的列表中. 返回值:在…
在List的排序中常用的是Collections.sort()方法,可以对String类型和Integer类型泛型的List集合进行排序. 首先演示sort()方法对Integer类型泛型的List排序 /* * 通过Collections.sort()方法,对Integer类型的泛型List进行排序 */ public void testSort1(){ List<Integer> integerList = new ArrayList<Integer>(); //插入100以内…
用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 /** * 根据order对User排序 */ public class User implements Comparable                     …
1.Integer/String泛型的List进行排序 List <Integer> integerlist = new ArrayList<Integer>();   //定义一个Integer泛型的List 然后用add()方法添加一些Integer类型的数据到该List中, Collections.sort(integerlist);                                //因为是数值型的数据,排序即按照大小升序排序 2.自定义泛型的List进行排序…
下面的例子显示java.util.Collections.synchronizedSet()方法的使用 package com.; import java.util.*; public class CollectionsDemo { public static void main(String[] args) { // create set Set<String> set = new HashSet<String>(); // populate the set set.add(&q…
今天发现单独的将一个ArrayList的对象添加到另外一个ArrayList的时候,总是源列表和目的列表相同的内存地址.原因如下: 偶然看到了Collections的copy(List desc,List src)方法.当时就想这个方法和初始化一个List desc = new  ArrayList(List c)[参数必须实现Collection接口]的区别. 两者的差别很大,后者是一个浅拷贝,只是对源list的元素进行拷贝,拷贝的只是引用.拷贝后两个list的元素(引用)不同,但是引用所指向…
要想对List进行排序,可以让实体对象实现Comparable接口,重写compareTo方法即可实现按某一属性排序,但是这种写法很单一,只能按照固定的一个属性排序,没变法变化.通过下面这种方法,可以动态的指定List按照某一个属性进行排序,例子很简单,看代码就明白了. import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; publ…
Collections.sort( )分为两部分,一部分为排序规则,一部分为排序算法 . 规则用来判断对象,算法则考虑如何进行排序 对于自定义对象,sort()不知道规则,所以无法比较,这种情况下一定要定义排序规则.方式有两种: 第一种,java.lang下面的一个接口:Comparable.可以让自定义对象实现一个Comparable接口,这个接口只有一个方法comparableTo(Object o) 其规则是当前对象与o对象进行比较,返回一个int值,系统根据此值进行排序. 如当前对象>o…
方法注释 /** * Returns an immutable list containing only the specified object. * The returned list is serializable. * * @param <T> the class of the objects in the list * @param o the sole object to be stored in the returned list. * @return an immutable…
1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class UserSort { public static void main(String[] args) { List<User> userList =new ArrayList<User&g…
package test0; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; /**…
collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> p = (1, 2) 但是,看到(1, 2),很难看出这个tuple是用来表示一个坐标的. 定义一个class又小题大做了,这时,namedtuple就派上了用场: >>> from collections import namedtuple >>> Point = n…
我们项目中,默认建好是只有一个target的,但是,一些场景中,多target能帮助我们更好的使用项目. 场景1: 同一项目,一般会分不同环境:开发环境.测试环境.正式(生产)环境. 这就涉及到一个请求接口的区别,一般我们可能会定义多个,每次切换环境,就用代码注释解决,的确不是太方便. 其次一个,就是某一类特殊项目,主功能都一样,可能就是只需要更换icon图标.bundleID等等信息,需要发布多款APP,这种情况下,你如果每次发布一个就手动替换这些信息,真的要哭了... 场景2: 就是同一产品…
前言 大欢哥的题目完成了,但是衍生出一个新的问题!上篇随笔中我和大欢哥采用的随机数生成方式,到底是谁的比较公平??? 正文 欢迎来到阿段博客<奇思妙想>!我们的口号是 “心有多大,bug就有多大”! 下面介绍我们的嘉宾: 小鹏哥,小鹏哥来自xxxxxx,取得xxxxxx(一堆头衔).前端老司机.大家鼓掌欢迎欢迎我们的小鹏哥,papapa....(小鹏哥没有大欢哥高大,但是小鹏哥有个高大的内心,从座驾便可以看出来). 大欢哥,大欢哥前面介绍了,现在不用介绍了(大欢哥此时心里有一句 “我去,不介绍…
Collections : 它的出现给集合操作提供了更多的功能.这个类不需要创建对象,内部提供的都是静态方法. 一般方法 Collections. sort (list); list 集合进行元素的自然顺序排序. Collections. sort(list, new AComparator ()); 按指定的比较器方法排序. class AComparatorByLen implements Comparator<String>{ public int compare(String s1,S…
方法一:使用Arrays.asList()方法   1 2 String[] asset = {"equity", "stocks", "gold", "foreign exchange","fixed income", "futures", "options"}; List<String> assetList = Arrays.asList(asset)…
60.性能考虑,数组是首选,在基本类型处理方面.数组还是占优势的,并且集合类的底层也都是通过数组实现.建议在性能要求较高的场景中使用数组替代集合. 61.假设有必要.使用变长数组:我们能够通过对数组扩容"婉转"地解决数组扩容问题.以下採用的是Arrays数组工具类的copyOf方法.产生了一个newLen长度的新数组,并把原有的值拷贝了进去,之后就能够对超长的元素进行赋值了 62.警惕数组的浅拷贝 Person[] p=new Person[5]; Person[] p2=Arrays…
5.3  SpEL语法 5.3.1  基本表达式 一.字面量表达式: SpEL支持的字面量包括:字符串.数字类型(int.long.float.double).布尔类型.null类型. 类型 示例 字符串 String str1 = parser.parseExpression("'Hello World!'").getValue(String.class); String str2 = parser.parseExpression("\"Hello World!\…
5.3  SpEL语法 5.3.1  基本表达式 一.字面量表达式: SpEL支持的字面量包括:字符串.数字类型(int.long.float.double).布尔类型.null类型. 类型 示例 字符串 String str1 = parser.parseExpression("'Hello World!'").getValue(String.class); String str2 = parser.parseExpression("\"Hello World!\…
使用示例带你提前了解 Java 9 中的新特性 转载来源:https://juejin.im/post/58c5e402128fe100603cc194 英文出处:https://www.journaldev.com/13121/java-9-features-with-examples Oracle 公司即将在 2017 年 3 月底正式发布 Java SE 9.在这篇文章,我将使用一些示例简明扼要地阐述 Java 9 的新特性.当然,也是时候去了解一下. 1. Java 9 PEPK(JSh…
Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”,类似于Struts2x中使用的OGNL表达式语言, 能在运行时构建复杂表达式.存取对象图属性.对象方法调用等等,并能与Spring功能完美整合.表达式语言给静态Java语言增加了动态功能. SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可单独使用. 能干什么 表达式语言一般是用较为简单的形式完成主要的工作,减少开发的工作量. SpEL支持如下表达式: 一.基本表达式:字面量表达…
SqEL是一个可以独立于spring的表达式语言,即它可以用在XML中对语法进行简化 5.3 SpEL语法5.3.1 基本表达式一.字面量表达式: SpEL支持的字面量包括:字符串.数字类型(int.long.float.double).布尔类型.null类型.类型示例字符串String str1 = parser.parseExpression("'Hello World!'").getValue(String.class);String str2 = parser.parseExp…
Java 实例 本章节我们将为大家介绍 Java 常用的实例,通过实例学习我们可以更快的掌握 Java 的应用. Java 环境设置实例 //HelloWorld.java 文件 public class HelloWorld { public static void main(String []args) { System.out.println("Hello World"); } } /* 接下来我们使用 javac 命令来编译 Java 文件,并使用 java 命令执行编译的文件…
在上一篇文章Mybatis源码解析,一步一步从浅入深(四):将configuration.xml的解析到Configuration对象实例中我们谈到了properties,settings,environments节点的解析,总结一下,针对示例工程的configuration.xml文件来说properties节点的解析就是将dbConfig.properties中的数据库配置信息加载到了configuration实例的variables中,settings节点的解析让configuration…
  内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11867214.html 作业学习目标 (1) 掌握Vetor.Stack.Hashtable三个类的用途及常用API: (2)  掌握ArrayList.LinkList两个类的用途及常用API: (3) 了解java集合框架体系组成: (4) 掌握Java GUI中框架创建及属性设置中常用类的…
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11867214.html 作业学习目标 (1) 掌握Vetor.Stack.Hashtable三个类的用途及常用API: (2)  掌握ArrayList.LinkList两个类的用途及常用API: (3) 了解java集合框架体系组成: (4) 掌握Java GUI中框架创建及属性设置中常用类的…