热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java判断object类型是否为list_【基础篇】java集合概述与补充知识点

集合概述之前在基础5我们使用过ArrayList,即可变的数组容器,通常用于存储引用类型元素,这就是一种集合。集合:就是ja

集合

  • 概述

之前在基础5我们使用过ArrayList,即可变的数组容器,通常用于存储引用类型元素,这就是一种集合。

集合:就是java中提供的可以存储多个数据的容器。

集合与数组的区别:

1)数组的长度固定,集合的长度是可变的;

2)数组中存储的是同一类型的元素,且多是存储基本数据类型值。集合存储的都是对象,且对象类型可以不一致,当对象较多时,常使用集合进行存储。

  • 集合框架

JAVASE提供了各种集合的API,对于我们来说,要了解其继承与接口的操作,足够熟悉之后,才能知道什么时候采用哪个类,以及类之间如何彼此合作,直到灵活运用。这些集合框架都是很常用的,一定要掌握好。

集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection双列集合java.util.Map

Collection集合

  • 概述

单列集合类的根接口,单列就是像数组那样,一个坑存一个数据值。它有两个重要的子接口,分别是java.util.List和java.util.Set,其中List中元素是有序的/可重复的,Set中元素是无序的/不可重复的。

List接口的主要实现类有java.util.ArrayList和java.util.LinkedList。

Set接口的主要实现类有java.util.HashSet和java.util.TreeSet。

b551bfaf6e22a9afa15890b4e33bb19f.png

如图所示,最上层是父接口Collection,抽取了单列集合的共性方法,继而分了两个子类接口List和Set,List接口有三个实现类,Set集合也有几个个实现类。然后具体使用的时候,就是用的这些实现类,并不是直接用顶层的接口。

  • Collection常用函数

我们从顶层共用的函数开始,这里列举一些常使用的:

-public boolean add(E e):把给定的对象添加到当前集合中。

-public void clear():清空集合中所有的元素。

-public boolean remove(E e):把给定的对象在当前集合中删除。

-public boolean contains(E e):判断当前集合中是否包含给定的对象。

-public boolean isEmpty():判断当前集合是否为空。

-public int size():返回集合中元素的个数。

-public Object[] toArray():把集合中的元素,存储到数组中。

package

Iterator接口(迭代器)

我们发现,遍历集合中的所有元素,大多是用for循环的方式,还有一种更便捷的方式,就是java.util.Iterator接口,实际上Iterator接口也是集合中的一员,不同的是,这个是用于迭代访问Collection中的元素的。

主要方法:

-public E next():返回迭代的下一个元素。

-public boolean hasNext():如果仍有元素可以迭代,则返回true。

// 添加元素到集合
coll.add(" 串串星人 ");
coll.add(" 吐槽星人 ");
coll.add(" 汪星人 ");
// 遍历
// 使用迭代器 遍历 每个集合对象都有自己的迭代器
Iterator it = coll.iterator();
// 泛型指的是 迭代出 元素的数据类型
while(it.hasNext()){ // 判断是否有迭代元素
String s = it.next();// 获取迭代出的元素
System.out.println(s);
}

主要过程就是这样,首先获取集合的迭代器对象,然后hasNext()方法判断集合中是否存在下一个元素,如果存在,则调用next()方法将元素取出,否则说明空了,遍历结束。

迭代器遍历的时候,内部采用指针跟踪集合中的元素

12a717416529bb2b0f6cf42b93465d52.png

图示很简单,刚开始指向集合第一个元素之前,当调用next()方法时,就后移一位,指向对应的元素,每次一定一位。

  • 增强for

增强for循环,也就是for each内部也是一个 Iterator 迭代器,所以在遍历的时候,不能对集合中的元素进行增删操作。

for(String s:coll){System.out.println(s);
}

使用起来比Iterator更方便,不过要注意这里牵涉到类型问题,要匹配。

泛型

解释:其实就是一种广泛的类型之意,说白了就是不确定哪种类型,又可以是每个类型,所以就广泛着呗。根据需要,将需要的类型放进去,预先说明是这个类型的,就是这个作用了。这个都是跟着集合使用的,因为集合内的元素是不限制类型的,正好对应着泛型。

  • 使用格式

--对于这样用:

修饰符 class 类名 <代表泛型的变量 > { }

--在创建集合对象的时候这样用&#xff1a;

ArrayList list &#61; new ArrayList();

除了关键字以外&#xff0c;也可以自定义一个名字&#xff0c;然后作为泛型参数&#xff0c;只要在使用的时候主要类型一致即可。

--对于接口使用泛型&#xff1a;

修饰符 interface 接口名 <代表泛型的变量 > { }

  • 泛型通配符

在使用泛型类或接口时&#xff0c;如果泛型类型不确定&#xff0c;可以先用通配符表示。

  • 受限泛型

泛型在使用的时候&#xff0c;可以设定上下限&#xff0c;便于更精准的控制类型范围。

-上限&#xff1a;

格式&#xff1a;类型名称 对象名

含义&#xff1a;只能接收该类型及其子类。

-下限&#xff1a;

格式&#xff1a;类型名称 对象名

含义&#xff1a;只能接收该类型及其父类。

简单练习

实践需求&#xff1a;斗地主&#xff0c;规则&#xff1a;54张牌打乱顺序&#xff0c;三个玩家交替摸17张牌&#xff0c;留3张底牌。

分析&#xff1a;1.三个玩家集合&#xff0c;一副牌集合&#xff0c;一个底牌集合&#xff1b;2.打乱顺序与交替摸牌&#xff0c;适合带索引的集合&#xff0c;使用ArrayList集合。

import




推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
author-avatar
jianyue1980_852
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有