中华五金机械网可以帮助以下大类企业免费做宣传:五金工具_机电五金_锁具安防_机械设备_建筑五金_日用五金_五金材料_通用配件_运动休闲_环保设施_厨房家电_ 电子电工(我们的口号就是让企业营销不再是难题)
java中级教程集合
作者:佚名 日期:2019年08月11日 来源:本站原创 浏览:

核心提示:java中级教程集合 今天小编为大家带来java中级教程之集合。关于java集合问题,很多学过java一段时间的同学都说非常难,所以这篇教程是为了让大家巩固。 ava.util.Collections java中级教程就像有专门的java.util.

java中级教程集合

今天小编为大家带来java中级教程之集合。关于java集合问题,很多学过java一段时间的同学都说非常难,所以这篇教程是为了让大家巩固。

ava.util.Collections

java中级教程就像有专门的java.util.Arrays来处理数组,Java中对集合也有java.util.Collections来处理。

第一组方法主要返回集合的各种数据

Collections.checkedCollection / checkedList / checkedMap / checkedSet / checkedSortedMap / checkedSortedSet检查要添加的元素的类型并返回结果。任何尝试添加非法类型的变量都会抛出一个ClassCastException异常。这个功能可以防止在运行的时候出错。//fixmeCollections.emptyList / emptyMap / emptySet 返回一个固定的空集合,不能添加任何元素。Collections.singleton / singletonList / singletonMap返回一个只有一个入口的 set/list/map 集合。Collections.synchronizedCollection / synchronizedList / synchronizedMap / synchronizedSet / synchronizedSortedMap / synchronizedSortedSet获得集合的线程安全版本(多线程操作时开销低但不高效,而且不支持类似put或update这样的复合操作)Collections.unmodifiableCollection / unmodifiableList / unmodifiableMap / unmodifiableSet / unmodifiableSortedMap / unmodifiableSortedSet返回一个不可变的集合。当一个不可变对象中包含集合的时候,可以使用此方法。

第二组方法中,其中有一些方法因为某些原因没有加入到集合中

Collections.addAll添加一些元素或者一个数组的内容到集合中。Collections.binarySearch和数组的Arrays.binarySearch功能相同。Collections.disjoint检查两个集合是不是没有相同的元素。Collections.fill用一个指定的值代替集合中的所有元素。Collections.frequency集合中有多少元素是和给定元素相同的。Collections.indexOfSubList / lastIndexOfSubList和String.indexOf(String) / lastIndexOf(String)方法类似——找出给定的List中第一个出现或者最后一个出现的子表。Collections.max / min找出基于自然顺序或者比较器排序的集合中,最大的或者最小的元素。Collections.replaceAll将集合中的某一元素替换成另一个元素。Collections.reverse颠倒排列元素在集合中的顺序。如果你要在排序之后使用这个方法的话,在列表排序时,最好使用Collections.reverseOrder比较器。Collections.rotate根据给定的距离旋转元素。Collections.shuffle随机排放List集合中的节点,可以给定你自己的生成器——例如 java.util.Random / java.util.ThreadLocalRandom or java.security.SecureRandom。Collections.sort将集合按照自然顺序或者给定的顺序排序。Collections.swap交换集合中两个元素的位置(多数开发者都是自己实现这个操作的)。并发集合

这一部分将介绍java.util.concurrent包中线程安全的集合。这些集合的主要属性是一个不可分割的必须执行的方法。因为并发的操作,例如add或update或者check再update,都有一次以上的调用,必须同步。因为第一步从集合中组合操作查询到的信息在开始第二步操作时可能变为无效数据。

多数的并发集合是在Java 1.5引入的。ConcurrentSkipListMap / ConcurrentSkipListSet 和 LinkedBlockingDeque是在Java 1.6新加入的。Java 1.7加入了最后的 ConcurrentLinkedDeque 和 LinkedTransferQueue

ListsCopyOnWriteArrayListlist的实现每一次更新都会产生一个新的隐含数组副本,所以这个操作成本很高。通常用在遍历操作比更新操作多的集合,比如listeners/observers集合。Queues/dequesArrayBlockingQueue基于数组实现的一个有界阻塞队,大小不能重新定义。所以当你试图向一个满的队列添加元素的时候,就会受到阻塞,直到另一个方法从队列中取出元素。ConcurrentLinkedDeque / ConcurrentLinkedQueue基于链表实现的无界队列,添加元素不会堵塞。但是这就要求这个集合的消费者工作速度至少要和生产这一样快,不然内存就会耗尽。严重依赖于CAS(compare-and-set)操作。DelayQueue无界的保存Delayed元素的集合。元素只有在延时已经过期的时候才能被取出。队列的第一个元素延期最小(包含负值——延时已经过期)。当你要实现一个延期任务的队列的时候使用(不要自己手动实现——使用ScheduledThreadPoolExecutor)。LinkedBlockingDeque / LinkedBlockingQueue可选择有界或者无界基于链表的实现。在队列为空或者满的情况下使用ReentrantLock-s。LinkedTransferQueue基于链表的无界队列。除了通常的队列操作,它还有一系列的transfer方法,可以让生产者直接给等待的消费者传递信息,这样就不用将元素存储到队列中了。这是一个基于CAS操作的无锁集合。PriorityBlockingQueuePriorityQueue的无界的版本。SynchronousQueue一个有界队列,其中没有任何内存容量,广州北大青鸟Java是一个广泛使用的网络编程语言,它是一种新的计算概念。首先,作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构、具有可移植性、鲁棒性、安全性、并且提供了并发的机制、具有很高的性能。其次,它最大限度地利用了网络,Java的小应用程序(applet)可在网络上传输而不受CPU和环境的限制。另外,Java还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统。。这就意味着任何插入操作必须等到响应的取出操作才能执行,反之亦反。如果不需要Queue接口的话,通过Exchanger类也能完成响应的功能。MapsConcurrentHashMapget操作全并发访问,put操作可配置并发操作的哈希表。并发的级别可以通过构造函数中concurrencyLevel参数设置(默认级别16)。该参数会在Map内部划分一些分区。在put操作的时候只有只有更新的分区是锁住的。这种Map不是代替HashMap的线程安全版本——任何 get-then-put的操作都需要在外部进行同步。ConcurrentSkipListMap基于跳跃列表(Skip List)的ConcurrentNavigableMap实现。本质上这种集合可以当做一种TreeMap的线程安全版本来使用。SetsConcurrentSkipListSet使用 ConcurrentSkipListMap来存储的线程安全的Set。CopyOnWriteArraySet使用CopyOnWriteArrayList来存储的线程安全的Set。以上就是由小编为大家带来的java中级教程全部内容了,关于集合的所有问题,你都懂了吗?
上一篇文章:没有穿过高跟鞋的女人就不算是女人!
下一篇文章:外遇调查我怀孕老公对我很关心呢
发表评论
用户评论
关于我们 | 企业推广 | 服务条款 | 广告服务 | 隐私声明 | 免责声明 | 联系我们