当前位置: 首页 > article >正文

Java,集合框架,关于Collection接口

数组储存多个数据方面的特点:

·数组一旦初始化,其长度就是确定的。

·数组中的多个元素是依次紧密排列的,有序的,可重复的。

·数组一旦初始化完成,其元素的类型就是确定的。不是此类型的元素,就不能添加到此数组中。

数组储存多个数据方面的弊端:

·数组一旦初始化,其长度就是确定的。

·数组中储存数据特点的单一性。对于无序的不可重复的场景就不适用了。

·数组中可用的方法、属性都极少。具体的需求,要自己编写相关代码。

·元素的类型既可以是基本数据类型,也可以是引用数据类型。

·针对于数组中元素的删除,插入操作,性能比较差。

Java集合框架体系:(Java.util包下)

两个接口:

java.util.Collection:存储一个一个的数据。

        ——子接口:

①List:存储有序的,可重复的数据。(“动态”数组,即变长数组)

·实现类:ArrayList(主要的实现类)、LinkedList、Vector

②Set:存储无序的,不可重复的数据。(类似于集合)

·实现类:HashSet(主要实现类)、LinkedHashSet、TreeSet

java.util.Map:存储一对一对的数据。(key-value键值对,类似于数学的函数)

实现类:HashMap(主要实现类)、LinkedHashMap、TreeMap、Hashtable、Properties


Collection接口中的方法测试:

与添加相关:

(1) add(Object obj):添加元素对象到当前集合中。

(2)addAll(Collection other):添加other集合中的所有元素对象到当前集合中。

与判断相关:

(3)int size( ):获取当前集合中实际存储的元素个数。

(4)boolean isEmpty( ):判断当前集合是否为空集合。(其实是判断size的大小是否为零)

(5)boolean contains(Object obj):判断当前集合中是否存在一个与obj对象equals返回true的元素。(如果包含自定义类,建议重写equals方法)

(6) boolean containsAll(Collection coll):判断coll集合中的元素是否在当前集合中都存在。即coll集合是否是当前集合的“子集”。

(7)boolean equals(Object obj):判断当前集合与obj是否相等。

与删除相关:

(8)void clear( ):清空集合元素

(9) boolean remove(object obj):从当前集合中删除第一个找到的与obj对象equals返回true的元素。

(10)boolean removeAl(Collection coll):从当前集合中删除所有与coll集合中相同的元素。

(11) boolean retainAll(Collection coll):从当前集合中删除两个集合中不同的元素,使得当前集合仅保留与col(集合中的元素相同的元素,即当前集合中仅保留两个集合的交集。

其他:

(12) Object[ ] toArray( ):返回包含当前集合中所有元素的数组。

(13)hashCode( ):获取集合对象的哈希值。

(14)iterator( ):返回迭代器对象,用于集合遍历。

集合与数组的相互转换:

集合转换为数组:调用方法toArray( )。

数组转化为集合:调用Arrays的静态方法asList(Object ... objs)。

向Collection中添加元素的要求:

要求元素所属的类一定要重写equals( )。因为Collection中的相关方法在使用时,要调用元素所在类的equals( )。


迭代器(Iterator)的作用:用来遍历集合元素。

获取迭代器的方式:

Tterator ii = 集合对象.iterator;

迭代的方式:

用iterator.hasNext( )方法作为循环的判断条件,再循环遍历集合元素。

Person pp = new Person(19,"Lily");
Collection cc = new ArrayList();
cc.add("aaa");
cc.add(111223);//自动装箱为Integer类型再作为参数
cc.add(pp);

Iterator iterator = cc.iterator();
while(iterator.hasNext())
{
    System.out.println(iterator.next());
}

next的作用:①将指针指向的集合元素向下移②将下移后指针位置上的元素返回。


增强for循环(即foreach循环)的使用:

作用:用来遍历数组、集合。

格式:

for(要遍历的集合或数组的元素的类型 临时变量 : 要遍历的集合或数组变量)

{

        //操作临时变量

}

说明:

针对于集合来讲,增强for循环的底层使用的是迭代器。

增强for循环的执行过程中,是将集合或数组中的元素依次赋值给临时变量。


List接口中常用方法的测试:

List接口中存储数据的特点:

用于存储有序的、可以重复的数据。(有时使用List来替代数组,变长数组)

List中的常用方法:

第一批:Collection中声明的方法

第二批:因为List是有序的,所以有一些针对索引操作的方法。

插入元素

void add(int index,Object ele):在index位置插入ele元素

boolean addAll(int index,Collection eles):从index位置开始将eles中的所有元素添加进来

获取元素

Object get(int index):获取指定index位置的元素

List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合

获取元素索引

int indexOf(Object obj):返回obj在集合中首次出现的位置

int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置

删除和替换元素

Object remove(int index):移除指定index位置的元素,并返回此元素。

(假设要删除索引为2的元素,参数输入2即可。但是要删除值为2的元素,就要将2包装为Intrger类型(因为参数要Object,参数输入2时,会优先将2识别为int 类型的index。)后再传入参数。

Object set(int index, Object ele):设置指定index位置的元素为ele。


List接口的实现类特点:

·ArrayList:List接口的主要实现类。线程不安全的,效率高。底层使用Object[ ]数组存储。在添加数据、查找数据时效率较高,在插入数据,删除数据时效率较低。

·LinkedList:底层使用双向链表的方式进行存储。在插入数据,删除数据时效率较高,在添加数据、查找数据时效率较低。(在对集合中的数据进行频繁地删除、插入的操作时,建议使用此类。)

·Vector:List接口的古老实现类。线程安全的,效率低。底层使用Object[ ]数组存储。


http://www.kler.cn/a/132068.html

相关文章:

  • 【开源】基于JAVA的高校宿舍调配管理系统
  • 【C++11】多线程库 {thread线程库,mutex互斥锁库,condition_variable条件变量库,atomic原子操作库}
  • U盘如何自定义图标?
  • 为React Ant-Design Table增加字段设置 | 京东云技术团队
  • C#调用C++ dll教程
  • C 语言字符串
  • Hive效率优化记录
  • SystemVerilog学习 (10)——线程控制
  • SELF-RAG: 让LLM集检索,生成跟评判等多种能力于一身
  • SAP ABAP 主动调用外部系统的REST接口(x-www-form-urlencoded)
  • 计算机网络:网络层ARP协议
  • 海康Visionmaster-环境配置:VB.Net 二次开发环境配 置方法
  • 学习c#的第十六天
  • 【Git学习一】初始化仓库git init的使用和提交git add与git commit的使用
  • xstream实现xml和java bean 互相转换
  • 数据库迁移脚本
  • Leetcode 剑指 Offer II 053. 二叉搜索树中的中序后继
  • 实现Vue3源码 isReactive 和 isReadonly
  • LeetCode235. Lowest Common Ancestor of a Binary Search Tree
  • 常见面试题-Netty线程模型以及TCP粘包拆包