learning Collection Framwork

2024-05-05 20:18

本文主要是介绍learning Collection Framwork,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Collection

是一个容器类抽象接口,自jdk1.2及以后采用,一般容器都有增删移改操作,在多线程程序中,就有安全隐患。先看其子接口ListSet

List

是有序的 collection序列,元素可重复,该集合体系有索引。先看其子接口ArrayList, LinkedList, Vector三个实现类。
ArrayList:其底层数据结构基于数组结构;特点:查询速度快,增删稍慢,线程不同步
取出方式用iterator()和listIterator();
LinkedList:其底层数据结构基于链表结构;特点: 增删速度快,查询速度慢,线程不同步
特有方法:
addFirst(), addLast()
getFirst(),getLast()获取元素并返回,如果集合中没有元素会抛出NoSuchElementException;
removeFirst(),removeLast()获取元素并返回,但是该元素会被从集合中删除,如果集合中没有元素会抛出NoSuchElementException;
在JDK1.6出现替代方法:offerFirst(), offerLast(), peekFirst(), peekLast(), popFirst(), popLast();获取元素并返回,,如果集合中没有元素会返回null;
Vector:其底层数据结构基于数组,这个实现类是同步的,自jdk1.0就有了,属于元老级的集合类,逐渐被ArrayList替代了,比较浪费空间;
取出方式用返回值为枚举Enumeration类型的 elements(),由于枚举的名称和方法过长,逐渐被Iterator取代了。
Note 1:List集合元素是否相同,涉及到的contains()和remove()方法底层依赖的还是元素的equals方法。
Note 2:Java的更新,主要会涉及安全,效率,简化书写

Set

是无序的Collection序列,就是表现形式在,有序地存入元素,并不会有序取出元素,但这些元素在hash Table 里的hashCode值是有序的,不可重复;

HashSet

底层数据结构是hash Table,线程是非同步的。

Note 1:HashSet集合元素是否相同,涉及到的contains()和remove()方法底层依赖的还是元素的hashCode()和equals()方法。首先判断hash值,再通过equals()进一步的判断。

TreeSet

底层数据结构是二叉树,保证集合元素的唯一性compareTo方法返回0;TreeSet排序的前提要使其具备可比较性,因此,要implements Comparable接口,覆盖compareTo方法,这种方式也成为元素的自然顺序。

Note 1:排序时,主要条件相同时,一定要判断下次要条件。

泛型

在JDK1.5版本以后出现的,用以解决安全问题,是一个类型的安全机制。
好处:将ClassCastException抛出转移到了编译时期,方便我们解决问题。
格式:通过<类or接口>定义使用集合的数据类型;
泛型使用时期:通常在集合框架使用比较常见。
什么时候定义泛型类呢?
当类中要操作的引用数据类型不太确定时,早期定义Object来完成扩展,ClassCastException可能会在运行时发生,而且要强转。
现在定义泛型类完成扩展。
泛型限定
:通配符
? extends E:可以接受E或者其子类,上限。
? super E:可以接受E或者其父类,下线。

这篇关于learning Collection Framwork的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962583

相关文章

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

浅谈PHP5中垃圾回收算法(Garbage Collection)的演化

前言 PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放(使用C编写PHP或Zend扩展除外),这就意味着PHP本身实现了垃圾回收机制(Garbage Collection)。现在如果去PHP官方网站(php.net)可以看到,目前PHP5的两个分支版本PHP5.2和PHP5.3是分别更新的,这是因为许多项目仍然使用5.2版本的PHP,而5.3版本对5.2并不是完

Collection的所有的方法演示

import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class TestCollection {/*** @param args* Collection的所有的方法演示* 此程序没有使用泛型,所以可以添加任意类型* 以后如果写到泛型会补充这一方面的内容*/public s

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

Mybatis的collection只显示一条数据

在mybatis一对多映射中,多的那种表mybatis只查询出一条数据,而直接用sql查询数据库的话有多条数据。这是因为两张表的主键同名,都为id_key。解决方法:使用别名。给映射多的那张表的主键使用别名。 sql语句别名 resultmap映射

Learning Memory-guided Normality for Anomaly Detection——学习记忆引导的常态异常检测

又是一篇在自编码器框架中研究使用记忆模块的论文,可以看做19年的iccv的论文的衍生,在我的博客中对19年iccv这篇论文也做了简单介绍。韩国人写的,应该是吧,这名字听起来就像。 摘要abstract 我们解决异常检测的问题,即检测视频序列中的异常事件。基于卷积神经网络的异常检测方法通常利用代理任务(如重建输入视频帧)来学习描述正常情况的模型,而在训练时看不到异常样本,并在测试时使用重建误

Learning Temporal Regularity in Video Sequences——视频序列的时间规则性学习

Learning Temporal Regularity in Video Sequences CVPR2016 无监督视频异常事件检测早期工作 摘要 由于对“有意义”的定义不明确以及场景混乱,因此在较长的视频序列中感知有意义的活动是一个具有挑战性的问题。我们通过在非常有限的监督下使用多种来源学习常规运动模式的生成模型(称为规律性)来解决此问题。体来说,我们提出了两种基于自动编码器的方法,以

COD论文笔记 Adaptive Guidance Learning for Camouflaged Object Detection

论文的主要动机、现有方法的不足、拟解决的问题、主要贡献和创新点如下: 动机: 论文的核心动机是解决伪装目标检测(COD)中的挑战性任务。伪装目标检测旨在识别和分割那些在视觉上与周围环境高度相似的目标,这对于计算机视觉来说是非常困难的任务。尽管深度学习方法在该领域取得了一定进展,但现有方法仍面临有效分离目标和背景的难题,尤其是在伪装目标与背景特征高度相似的情况下。 现有方法的不足之处: 过于

One-Shot Imitation Learning

发表时间:NIPS2017 论文链接:https://readpaper.com/pdf-annotate/note?pdfId=4557560538297540609&noteId=2424799047081637376 作者单位:Berkeley AI Research Lab, Work done while at OpenAI Yan Duan†§ , Marcin Andrychow