2020-11-20 18:18发布
在日常的开发工作中,我们经常使用数组,但是数组是有很多的局限性的,比如:数组大小固定后不可修改,只能存储基本类型的值等等。
基于数组的这些局限性,Java框架就产生了用于解决此类问题的工具,即集合框架。
Java中有许多的集合框架类,基于这些类的共性特征,向上高度抽取,便形成了共性的集合框架接口-Collection。
由于此接口属于工具性质的,所以它属于util包,java核心的内容在lang核心包里存放着。
由于Collection是抽取了各集合的共性所形成的接口,所以所有的集合类都实现了此接口,此接口的特点如下:
1,它是用于存储对象的容器
2,可动态扩展容量
3,不能存储基本类型的值
我们在开发中对数组或集合的操作无非是增删改查四种操作,当然Collection接口既然是对各种集合的高度抽取的操作,它里面的方法也无非这四种。下面对这四种方法进行分类总结
1,添加
add 将指定的某一个元素添加到集合中
addAll 将指定的集合对象一次性添加到集合中
2,修改
对集合的修改无非是获取集合中的某一个元素然后再重新赋给新值
3,查询(获取)
iterator 此方法返回一个迭代器对象,方便用于对集合中的每个元素进行循环获取操作
contains 是否包含某个元素
containsAll 是否包含另一个集合中的所有元素
equals 比较两个集合是否相等
isEmpty 判断一个集合是否为空
size 获取集合中元素的数量
retainAll 求和另外一个集合的交集
4,删除
remove 删除集合中的某一个元素
removeAll 删除集合中某一个子集(参数为集合对象)
clear 清除集合中所有的元素
5,其它
toArray 返回包含此集合元素的数组对象
hashcode 返回此集合元素的哈希码
以上是Collection接口的所有的方法,由于具体操作都由它的实现类来完成,并且都比较简单,所以演示代码在介绍他们的实现类的时候再列出。
Collection接口有着许多的实现类及子接口,这些实现类或子接口中,一些是允许重复的,另外一些不允许重复;一些是有序的,而另外一些则是无序的。日常开发中比较常用的大致分为两类:List与Set(其实用了是这两个接口的实现类)
Collection是单列集合的顶层接口,统一定义了一套单列集合的接口规范
collection下面有两个子接口list和set
list有序有索引可以重复
set无序无索引不可以重复
Collection:来源于Java.util包,是非常实用常用的数据结构,字面意思就是容器.
Collection主要方法:
boolean add(Object o)添加对象到集合boolean remove(Object o)删除指定的对象int size()返回当前集合中元素的数量boolean contains(Object o)查找集合中是否有指定的对象boolean isEmpty()判断集合是否为空Iterator iterator()返回一个迭代器boolean containsAll(Collection c)查找集合中是否有集合c中的元素boolean addAll(Collection c)将集合c中所有的元素添加给该集合void clear()删除集合中所有元素void removeAll(Collection c)从集合中删除c集合中也有的元素void retainAll(Collection c)从集合中删除集合c中不包含的元素
Collection是单列顶层接口,其下有两个子接口List和Set.
List的实现类:
LinkedList没有同步方法ArrayList非同步的(unsynchronized)
Vector(同步) 非常类似ArrayList,但是Vector是同步的
Set的实现类:
HashSet:按照哈希算法来存取集合中的对象,存取速度比较快.
LinkedHashSet是有序的(不同于HashSet)
LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet.
TreeSet:不能写入空数据,写入的数据是有序的,不写入重复数据
里氏代换原则(Liskov Substitution Principle, LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象里氏代换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一...
心里有个预期,然后看看是以什么目的进这家企业工作,要是赚钱的话,那就多要点,要是学习的话,可以根据情况要一个能养活自己的价格。
Java中有八种数据类型,基础数据类型分别是:byte,short,int,long,float,double,char,boolean,引用数据类型分别是:数组,类和接口。方法传参的时候我们有两种,一种是形式参数(定义方法时写的参数),一种是实际参数(调用方法时给的具体值)。首先...
现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。分布式架构其实就是分布式系...
1、监控GC的状态使用各种JVM工具,查看当前日志,分析JVM参数的设置,分析堆内存快照和GC日志,根据实际的各区域的内存划分和GC的执行时间,判断是否需要进行优化2、分析结果、判断是否需要优化如果各项参数设置合理,系统没有超时的日志出现,GC频率也不高,...
MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则可以...
学vue应该要先学习javascript 的基础知识和用法。
1、lambda是jdk8的新特性2、使用lambda的前提,必须是一个接口,接口只能有一个抽象方法3、Lambda 表达式的简单例子:// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数...
你没有把jdk配置到eclipse里,步骤如下:打开eclipse,菜单栏找到window -> preference -> java -> install jres -> add -> standard vm -> 设置好相应的jre home就可以了。
使用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。...
1. 区别:堆和栈区别堆:主要用于储存实例化的对象,数组。由JVM动态分配内存空间。一个JVM只有一个堆内存,线程是可以共享数据的。栈:主要用于储存局部变量和对象的引用变量,每个线程都会有一个独立的栈空间,所以线程之间是不共享数据的。2. 堆内存和栈内...
至少h5、CSS、JS,包括数据库连接技术,ajax都要会哦
对于一个秒杀系统来说,瞬时的大量请求会对后台服务造成冲击,需要保证服务的可用性以及业务的正确性。设计了一个高并发高可用的系统简要流程架构如下图:1.将商品(或券)的信息等静态数据放到cdn节点,实现动静分离2.业务请求和业务处理之间使用MQ对请求进行削...
为了避免上面出现的几种情况,在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同。未授权读取(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个数据则不允许同时进行写操作,但允许其他事...
封装就是把抽象出来的JAVA类的变量和方法集成为一个集体,就像集成电路元件成为一个独立的芯片一样,它只留出对外的接口,使用者可以直接使用它,但看不到其内部是怎样实现的,JAVA类的封装就是对外而言能直接使用它来定义的对象去调用相关变量和方法。...
1. java.awt:提供了绘图和图像类,主要用于编写GUI程序,包括按钮、标签等常用组件以及相应的事件类。2. java.lang:java的语言包,是核心包,默认导入到用户程序,包中有object类,数据类型包装类,数学类,字符串类,系统和运行时类,操作类,线程类,错...
最多设置5个标签!
在日常的开发工作中,我们经常使用数组,但是数组是有很多的局限性的,比如:数组大小固定后不可修改,只能存储基本类型的值等等。
基于数组的这些局限性,Java框架就产生了用于解决此类问题的工具,即集合框架。
Java中有许多的集合框架类,基于这些类的共性特征,向上高度抽取,便形成了共性的集合框架接口-Collection。
由于此接口属于工具性质的,所以它属于util包,java核心的内容在lang核心包里存放着。
由于Collection是抽取了各集合的共性所形成的接口,所以所有的集合类都实现了此接口,此接口的特点如下:
1,它是用于存储对象的容器
2,可动态扩展容量
3,不能存储基本类型的值
我们在开发中对数组或集合的操作无非是增删改查四种操作,当然Collection接口既然是对各种集合的高度抽取的操作,它里面的方法也无非这四种。下面对这四种方法进行分类总结
1,添加
add 将指定的某一个元素添加到集合中
addAll 将指定的集合对象一次性添加到集合中
2,修改
对集合的修改无非是获取集合中的某一个元素然后再重新赋给新值
3,查询(获取)
iterator 此方法返回一个迭代器对象,方便用于对集合中的每个元素进行循环获取操作
contains 是否包含某个元素
containsAll 是否包含另一个集合中的所有元素
equals 比较两个集合是否相等
isEmpty 判断一个集合是否为空
size 获取集合中元素的数量
retainAll 求和另外一个集合的交集
4,删除
remove 删除集合中的某一个元素
removeAll 删除集合中某一个子集(参数为集合对象)
clear 清除集合中所有的元素
5,其它
toArray 返回包含此集合元素的数组对象
hashcode 返回此集合元素的哈希码
以上是Collection接口的所有的方法,由于具体操作都由它的实现类来完成,并且都比较简单,所以演示代码在介绍他们的实现类的时候再列出。
Collection接口有着许多的实现类及子接口,这些实现类或子接口中,一些是允许重复的,另外一些不允许重复;一些是有序的,而另外一些则是无序的。日常开发中比较常用的大致分为两类:List与Set(其实用了是这两个接口的实现类)
Collection是单列集合的顶层接口,统一定义了一套单列集合的接口规范
collection下面有两个子接口list和set
list有序有索引可以重复
set无序无索引不可以重复
Collection:来源于Java.util包,是非常实用常用的数据结构,字面意思就是容器.
Collection主要方法:
boolean add(Object o)添加对象到集合
boolean remove(Object o)删除指定的对象
int size()返回当前集合中元素的数量
boolean contains(Object o)查找集合中是否有指定的对象
boolean isEmpty()判断集合是否为空
Iterator iterator()返回一个迭代器
boolean containsAll(Collection c)查找集合中是否有集合c中的元素
boolean addAll(Collection c)将集合c中所有的元素添加给该集合
void clear()删除集合中所有元素
void removeAll(Collection c)从集合中删除c集合中也有的元素
void retainAll(Collection c)从集合中删除集合c中不包含的元素
Collection是单列顶层接口,其下有两个子接口List和Set.
List的实现类:
LinkedList没有同步方法
ArrayList非同步的(unsynchronized)
Vector(同步) 非常类似ArrayList,但是Vector是同步的
Set的实现类:
HashSet:按照哈希算法来存取集合中的对象,存取速度比较快.
LinkedHashSet是有序的(不同于HashSet)
LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet.
TreeSet:不能写入空数据,写入的数据是有序的,不写入重复数据
add 将指定的某一个元素添加到集合中
addAll 将指定的集合对象一次性添加到集合中
iterator 此方法返回一个迭代器对象,方便用于对集合中的每个元素进行循环获取操作
contains 是否包含某个元素
containsAll 是否包含另一个集合中的所有元素
equals 比较两个集合是否相等
isEmpty 判断一个集合是否为空
size 获取集合中元素的数量
retainAll 求和另外一个集合的交集
remove 删除集合中的某一个元素
removeAll 删除集合中某一个子集(参数为集合对象)
clear 清除集合中所有的元素
toArray 返回包含此集合元素的数组对象
hashcode 返回此集合元素的哈希码
相关问题推荐
里氏代换原则(Liskov Substitution Principle, LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象里氏代换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一...
心里有个预期,然后看看是以什么目的进这家企业工作,要是赚钱的话,那就多要点,要是学习的话,可以根据情况要一个能养活自己的价格。
Java中有八种数据类型,基础数据类型分别是:byte,short,int,long,float,double,char,boolean,引用数据类型分别是:数组,类和接口。方法传参的时候我们有两种,一种是形式参数(定义方法时写的参数),一种是实际参数(调用方法时给的具体值)。首先...
现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。分布式架构其实就是分布式系...
1、监控GC的状态使用各种JVM工具,查看当前日志,分析JVM参数的设置,分析堆内存快照和GC日志,根据实际的各区域的内存划分和GC的执行时间,判断是否需要进行优化2、分析结果、判断是否需要优化如果各项参数设置合理,系统没有超时的日志出现,GC频率也不高,...
MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则可以...
学vue应该要先学习javascript 的基础知识和用法。
1、lambda是jdk8的新特性2、使用lambda的前提,必须是一个接口,接口只能有一个抽象方法3、Lambda 表达式的简单例子:// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数...
你没有把jdk配置到eclipse里,步骤如下:打开eclipse,菜单栏找到window -> preference -> java -> install jres -> add -> standard vm -> 设置好相应的jre home就可以了。
使用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。...
1. 区别:堆和栈区别堆:主要用于储存实例化的对象,数组。由JVM动态分配内存空间。一个JVM只有一个堆内存,线程是可以共享数据的。栈:主要用于储存局部变量和对象的引用变量,每个线程都会有一个独立的栈空间,所以线程之间是不共享数据的。2. 堆内存和栈内...
至少h5、CSS、JS,包括数据库连接技术,ajax都要会哦
对于一个秒杀系统来说,瞬时的大量请求会对后台服务造成冲击,需要保证服务的可用性以及业务的正确性。设计了一个高并发高可用的系统简要流程架构如下图:1.将商品(或券)的信息等静态数据放到cdn节点,实现动静分离2.业务请求和业务处理之间使用MQ对请求进行削...
为了避免上面出现的几种情况,在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同。未授权读取(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个数据则不允许同时进行写操作,但允许其他事...
封装就是把抽象出来的JAVA类的变量和方法集成为一个集体,就像集成电路元件成为一个独立的芯片一样,它只留出对外的接口,使用者可以直接使用它,但看不到其内部是怎样实现的,JAVA类的封装就是对外而言能直接使用它来定义的对象去调用相关变量和方法。...
1. java.awt:提供了绘图和图像类,主要用于编写GUI程序,包括按钮、标签等常用组件以及相应的事件类。2. java.lang:java的语言包,是核心包,默认导入到用户程序,包中有object类,数据类型包装类,数学类,字符串类,系统和运行时类,操作类,线程类,错...