java.util.Collections.copy()方法注意点】的更多相关文章

今天发现单独的将一个ArrayList的对象添加到另外一个ArrayList的时候,总是源列表和目的列表相同的内存地址.原因如下: 偶然看到了Collections的copy(List desc,List src)方法.当时就想这个方法和初始化一个List desc = new  ArrayList(List c)[参数必须实现Collection接口]的区别. 两者的差别很大,后者是一个浅拷贝,只是对源list的元素进行拷贝,拷贝的只是引用.拷贝后两个list的元素(引用)不同,但是引用所指向…
今天同事问我怎样将一个列表(list1)拷贝到另一个列表(list2),然后修改新的列表(list2)不会影响到旧的列表(list1),想了一想,这是深拷贝啊. 可是,除了循环new还有别的办法吗,想了又想,自己也是啥都不懂啊,赶紧百度学习一下,于是就找到了java.util.Collections.copy(),一开始还以为这个是个深拷贝呢,没想到还是个浅拷贝.虽然还没找到深拷贝的方法去解决同事的问题,但还是要学习一下这个浅拷贝,毕竟也是有用滴. 先写个单元测试试一下: @Test publi…
下面的例子显示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…
  类 java.util.Collections 提供了对Set.List.Map进行排序.填充.查找元素的辅助方法. 1. void sort(List) //对List容器内的元素排序,排序的规则是按照升序进行排序. 2. void shuffle(List) //对List容器内的元素进行随机排列. 3. void reverse(List) //对List容器内的元素进行逆续排列 . 4. void fill(List, Object) //用一个特定的对象重写整个List容器. 5.…
java.util.Collections 集合帮助类 演示样例程序(JUnit演示) 排序 @Test public void testSort() { List<Integer> demoList = new ArrayList<Integer>(Arrays.asList(3, 2, 1)); assertEquals(3, demoList.get(0).intValue()); //public static <T extends Comparable<? s…
任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.Guava沿着这些路线提供了更多的工具方法:适用于所有集合的静态方法.这是Guava最流行和成熟的部分之一. 我们用相对直观的方式把工具类与特定集合接口的对应关系归纳如下: 集合接口 属于JDK还是Guava 对应的Guava工具类 Collection JDK Collections2:不要和java.util.Collections混淆 List JDK Lists Set JDK Set…
1. 概述 public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m) 返回指定映射的不可修改视图.此方法允许模块为用户提供对内部映射的“只读”访问.在返回的映射上执行的查询操作将“读完”指定的映射. 试图修改返回的映射(不管是直接修改还是通过其 collection 视图进行修改)将导致抛出 UnsupportedOperationException. 如果指定映射是可序列化…
一.概述 工具类与特定集合接口的对应关系归纳如下: 集合接口 属于JDK还是Guava 对应的Guava工具类 Collection JDK Collections2:不要和java.util.Collections混淆 List JDK Lists Set JDK Sets SortedSet JDK Sets Map JDK Maps SortedMap JDK Maps Queue JDK Queues Multiset Guava Multisets Multimap Guava Mul…
原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.Guava沿着这些路线提供了更多的工具方法:适用于所有集合的静态方法.这是Guava最流行和成熟的部分之一. 我们用相对直观的方式把工具类与特定集合接口的对应关系归纳如下: 集合接口 属于JDK还是Guava 对应的Guava工具类 Collection JDK Collections2:不要和jav…
转载的,有问题请联系我 原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.Guava沿着这些路线提供了更多的工具方法:适用于所有集合的静态方法.这是Guava最流行和成熟的部分之一. 我们用相对直观的方式把工具类与特定集合接口的对应关系归纳如下: 集合接口 属于JDK还是Guava 对应的Guava工具类 Collection JDK Collect…
我的程序大概是这样的: main()主函数里面,调用两个自定义的方法,这里我们称之为方法a和方法b: 主函数main()里有一个:Scanner scanner = new Scanner(System.in); 方法a和方法b里也有这个:Scanner scanner = new Scanner(System.in); 当主函数调用完方法a以后,代码又执行到main()里的时候,就会突然的报错: java.util.NoSuchElementException 这个时候,我们只需要把方法a()…
1.Integer/String泛型的List进行排序 List <Integer> integerlist = new ArrayList<Integer>();   //定义一个Integer泛型的List 然后用add()方法添加一些Integer类型的数据到该List中, Collections.sort(integerlist);                                //因为是数值型的数据,排序即按照大小升序排序 2.自定义泛型的List进行排序…
Collections类提供了一些操作集合的方法  下面介绍几个方法 1.将集合变为线程安全的 三个方法分别对应了ArrayList,HashMap,HashSet: Collections.synchronizedList(); Collections.synchronizedMap(); Collections.synchronizedSet(); //使用方法很简单,暂时无法看出效果 List<String> list=new ArrayList<String>(); Lis…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 算法是数据结构的灵魂! 好的算法搭配上合适的数据结构,可以让代码功能大大的提升效率.当然,算法学习不只是刷题,还需要落地与应用,否则到了写代码的时候,还是会for循环+ifelse. 当开发一个稍微复杂点的业务流程时,往往要用到与之契合的数据结构和算法逻辑,在与设计模式结合,这样既能让你的写出具有高性能的代码,也能让这些代码具备良好的扩展性. 在以往的章节中,我们把Java常用的数…
p.p1 { margin: 0; font: 11px Monaco } span.s1 { text-decoration: underline } span.s2 { color: rgba(126, 80, 79, 1) } span.s3 { color: rgba(57, 51, 255, 1) } span.Apple-tab-span { white-space: pre } Map context = Collections.singletonMap("key", &…
问题:ArrayList  等线程不安全 当多线程并发修改一个集合数据时,可能同一个下标位置被覆盖. 示例代码: 一个List,我们创建10个线程,每个线程往这个List中添加1000条数据,结果往往不是预期的10000个大小: import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.ForkJoinPool; import java.util.…
要想对List进行排序,可以让实体对象实现Comparable接口,重写compareTo方法即可实现按某一属性排序,但是这种写法很单一,只能按照固定的一个属性排序,没变法变化.通过下面这种方法,可以动态的指定List按照某一个属性进行排序,例子很简单,看代码就明白了. import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; publ…
方法一 public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll) 此方法需要传入一个实现了Comparable接口的对象类的集合 创建实现了Comparable的对象类 public class Student1 implements Comparable<Student1> { private String name; p…
注:调用此方法时需要根据自己的须由复写Objects的equals方法 创建复写了equals方法的对象类 public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name;…
方法一 public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) 此方法传入一个实现了Comparable接口的对象类的列表和要查找的元素. 创建实现了Comparable接口的对象类 public class Student1 implements Comparable<Student1> { private String name; priv…
代码: package com.hy; import java.util.Arrays; import java.util.Collections; import java.util.List; public class Test { public static void main(String[] args) { String[] arr= {"19-10-19","19-10-01","19-05-03","18-07-20&quo…
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…
最近在学习算法和数据结构,用到Java里的Stack类,但程序运行结果一直和我预料的不一样,网上也没查清楚,最后查了API,才搞明白. java.util.Stack继承类 java.util.Vector empty()方法是Stack自己实现的方法 isEmpty() 是从Vector继承的方法 其实两者用法差不多一样…
说明 工具类,提供了许多静态方法,用于操作集合. 模块:java.util.Collections 方法:全是static方法,使用时直接Collections.xxx( ... ) 返回值类型 方法 说明 boolean addAll(Collection< ? super T >c, T... elements) 把第二个参数中的所有元素添加到c中 Queue<T> asLifoQueue(Deque <T> deque) 返回deque对应的Queue int b…
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f,g这样,当然数字也是这样的.compare(a,b)方法:根据第一个参数小于.等于或大于第二个参数分别返回负整数.零或正整数.equals(obj)方法:仅当指定的对象也是一个 Comparator,并且强行实施与此 Comparator 相同的排序时才返回 true. Collections.so…
在公司接触到Collections.unmodifiableList(List<? extends T> list)) 觉得用法挺特殊的,所以学习了下,简单而言,看名字就知道,将参数中的List返回一个不可修改的List. 觉得以下这篇文章写得很好,说 明了它的应用场景. -------------------------------------------------------------------------------------- 在<重构——改善既有代码的设计>一书中…
题词 JDK,Java Development Kit. 首先,我们必须认识到,,JDK但,但设置Java只有基础类库.它是Sun通过基础类库开发,这是唯一的.JDK书写总结的类库.从技术含量来说,还是在一个层级上,它们都是须要被编译成字节码.在JRE中执行的.JDK编译后的结果就是jre/lib下的rt.jar.我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列全部文章基于的JDK版本号都是1.7.16. 源代码下载地址:https://jdk7.java.net…
转载自http://janeky.iteye.com/blog/770393 ----------------------------------------------------------------------------- 3. Semaphore     我们先来学习一下JDK1.5 API中关于这个类的详细介绍: “一个计数信号量.从概念上讲,信号量维护了一个许可集.如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可.每个 release() 添加一个许可,从…
  java.util.ConcurrentModificationException对于这个异常我们一般会认为是在遍历list的时候对这个list做了add,remove等修改操作造成的,最近在线上日志偶尔发现了这个异常,完整异常如下: java.util.ConcurrentModificationException: null at java.util.ArrayList.sort(ArrayList.java:1462) at java.util.Collections.sort(Col…
(原) 今天看了一下现场的环境,发现有个其它部门的项目用到了这样一个参数: -Djava.util.Arrays.useLegacyMergeSort=true 于是查看了一下什么作用. 在JDK1.6和JDK1.7的版本中,使用comparator排序可能在1.6版本中正常运行,而在1.7版本有时会报异常,IllegalArgumentException(异常的内容大概是:Comparison method violates its general contract!). 在JDK7的不兼容列…