第十二章 集合类

12.1集合类概论

java.util包中提供了一些集合类,这些 集合类又被成为容器,提到容器不难想到数组。集合类于数组的不同之处是:数组的长度是固定的  但集合类不同长度是可变的:数组用来存放基本数据类型的数据,集合用来存放对象的引用。常用的集合又List集合和Map集合  其中List集合与Set集合继承了Collection接口,各个杰克偶还提供了不同的实现类,上述集合类的继承关系 如下

 12.2 Collection接口  

Collection接口时层次结构中的根接口,构成Collection的单位称为元素  Collection接口同城直接使用,但该解耦提供了添加元素,删除元素,管理数据的方法,由于List接口与 Set接口都继续继承了Collection接口,因此这些方法对List集合与Set集合是通用的。Collection接口的常用方法如下

方法    功能描述
add(E e)    将指定的对象添加到该集合中
remove(Object o )    将指定的对象从该集合中移除
isEmpty()    返回boolean值,用于判断当前集合是否为空
iterator()    返回在此Collection的元素上进行迭代的迭代器。用于遍历集合中的对象
size()    返回int型值,获取该集合中元素的个数
具体使用如12.1例题

代码

package 集合类;
 
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
 
public class Muster {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Collection<String> list = new ArrayList<>();//创建集合类对象 泛型为String类型
        list.add("《jvaa从入门到放弃》");//添加数据
        list.add("《零基础学java》");
        list.add("《java精彩编程200例》");
        Iterator<String> it=list.iterator();//创建迭代器  循环集合类内的数据
        while(it.hasNext()){//判断是否有下一个值
            String str = (String)it.next();//拿去下一个值使用
            System.out.println(str);//输出
        }
    }
 
}

 运行结果图

12.3List集合 

数组和list的区别 一个可以增加 数组不可以增加 因为数组增加的话 会出现下标越界   所以要学习 list

List接口的常用使用实现类有 ArrayList类  数组  LnledList类 列表 

ArrayList类  数组   更适用于查找   实现了可变的数组  允许保存所有元苏  包括null  可以根据索引位置对集合进行快速随机访问  。缺点是向指定的索引位插入对象或者删除对象的熟读较慢

LnledList类 列表    更实用为增删改  采用了链表接口保存对象。 这种结构的有点事便于集合中插入和删除对象。需要向集合中插入,  删除独享时  使用

add()添加   get()获取   删除remove()删除  size()获取元素个数    isEmpty()返回boolean类型  判断当前集合是否为空ArrayList类实现的List集合的效率更高;但对于随机访问集合中的对象 使用ArrayList类实现List集合的效率较低

List<E>list =new  ArrayList<>;
List<E>list2 =new LinkedList<>;
 例如  如果集合中的元素为字符串类型,那么E可以改成String类型

Index 索引

例题12.3

package 集合类;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
public class Gather {
    //设置数组下表越界
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<String> list =new ArrayList<>();//创建集合对象
        list.add("a");//向集合中添加元素
        list.add("b");
        list.add("c");
        for(int j = 0 ;j<list.size();j++) {//遍历集合
            System.out.println(list.get(j));
            }    
        System.out.println("第二种输出方式");
        for(String zx:list) {   
            System.out.println(zx);
        }
        System.out.println("迭代器");
        Iterator it = list.iterator();//Iterator迭代器
        while (it.hasNext()) {//hasNext是否有下一个
            System.out.println(it.next());
        }
}
}

12.3  设置数组下标越界

 Iterator 迭代器

12.1迭代器试题

hasNext() 判断是否有下一个值

naxt()  拿下一个值来使用

Set集合(接口)

Set接口 分两种 一个是HashSex  散装集合(哈希表)   TreeSet 树集合(红黑树)  不能储存两个相同的元素   同一个哈希地址可存放多个不同的对象 可以放不同的对象 但是不能存相同的对象

HashSex  散装集合(哈希表)HashSet类实现Set接口  有哈希表(实际上是一个HashMap实例)支持  它不保证Sat集合的迭代顺序,特别是它不保证该顺序恒久不变 此类允许使null元素

 TreeSet 树集合(红黑树)  TreeSext类不仅实现了Set接口还实现了java.util.SortedSet接口  因此TreeSet类实现了Set集合遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序  即可以通过比较器来对用TreeSet类实现的Set集合中的对象进行排序 TreeSet类的性能的方法

contains(Object  o)  检查元素是否存在

方法    功能描述
first()    返回此Set集合中当前第一个(最低)元素
last()    返回此Set集合中当前最后一个(最高)元素
comparator()    返回对此Set集合中的元素进行排序的比较器,如果Set集合使用自然顺序  则返回null
headSet(E toElement)    返回一个新的Set集合  新的集合时toElement对象(不包含)之前的所有对象
subSet(E formElement EfromElement)

返回一个新的Set集合  fromElement对象(包含)fromElement对象(不包含)之间的所有对象
tailSet(E fromElement)    返回一个新的Set集合  新的集合包含FromElement对象(包含)之后的所有对象
HashSex例题

  TreeSet 树集合(红黑树)

package 集合类;
 
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
 
public class TreeSetTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Set<Integer> ste = new TreeSet<>();//红黑树
        ste.add(-5);
        ste.add(-7);
        ste.add(10);
        ste.add(6);
        ste.add(3);
        Iterator<Integer>it = ste.iterator();//创建对象
        System.out.println("Set集合中的元素:");//提示信息
        while(it.hasNext()) {//遍历输出  Set集合元素
        System.out.println(it.next()+"");
        }
    }
 
}

12.5 Map集合

 Map集合时没有结成Collecion接口,其提供的时ket到value的映射。Map集合中不能包含相同key,每个key只能映射一个value。key还决定了储存对象在映射中的储存位置,但不是由key对象本身来决定的,而是通过一种“散列技术”进行处理,产生一个散列码的整数值。散列码通常用一个偏移量,该偏移量对应分配给映射内存区域的起始位置,从而确定储存对象在映射中储存位置。Map集合包裹了Map接口以及Map接口的所实现类

12.5.1Map接口

Map 接口提供了讲key映射到值得对象,一个映射不能包含重复得key,每一个key最多只能映射到一个值,除集合得常用方法外 Map接口还提供了 如下的集中使用方法

方法    功能描述
put(K key,V value)    向集合中添加指定的key和value的映射关系
containsKey(Object key)    如果此时映射包含指定key的映射关系,则返回 true
containsValue (Object  value )    
如果此映射一个或者多个映射到指定值,则返回true

get(Object key)    如果存在指定的key对象,则返回该对象对应的值   否则返回null
keySet()    返回该集合中的所有key对象形成的Set集合
values()    返回该集合中所有值对象形成的Collection集合
 12.5.2Map接口的实现类

Map接口与上一个Set集合类似 有两个类 一个时HashMap类和TreeMap  分别是一个时哈希表 一个是红黑树  主要内容如下

HashMap类是基于哈希表的Map接口实现的,此实现提供所有可选的映射操作, 并允许使用null值和null建 但必须保证建的唯一性,HashMap类通过哈希表对其内部的映射关系进行快速查找,此类不保证映射顺序,特别是它不报证该顺序永恒不变

TerrMap类不仅实现了Map接口,还实现了java.util.SortedMap接口,因此集合中的映射关系具有一定的顺序,但是添加了 删除和定位映射关系是,TreeMap类比HashMap类性能稍差由于TreeMap类实现了Map结合中的映射关系是根据建对象按照一定的顺序排列的  因此不允许建对象为null

建议 使用HashMap类实现Map结合 因为由HashMap类实现的Map集合添加和删除映射关系效率更高  可以通过HashMap类创建Map集合,当需要顺序输出时,在创建一个完成相同映射关系的TreeMap类实例

12.4例题

package 集合类;
 
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
 
public class HashMapTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Map<String,String> map = new HashMap<>();
        map.put("ISBN-978654", "java中入门到精通");
        map.put("ISBN-978361", "Android从入门到精通");
        map.put("ISBN-978893", "21天学Android");
        map.put("ISBN-978756", "21天学java");
        Set<String>set=map.keySet();
        Iterator<String>it=set.iterator();
        System.out.println("key值:");
        while(it.hasNext()) {
            System.out.println(it.next()+"");
        }
    Collection<String>coll =map.values();
    it=coll.iterator();
    System.out.println("\nvalue值:");
    while(it.hasNext()) {
        System.out.println(it.next()+"");
    }
    }
}

package 集合类;
 
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
 
public class HashMapTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Map<String,String> map = new HashMap<>();//创建 Map集合类对象
        map.put("ISBN-978654:", "java中入门到精通");//添加数据
        map.put("ISBN-978361:", "Android从入门到精通");
        map.put("ISBN-978893:", "21天学Android");
        map.put("ISBN-978756:", "21天学java");
        Set<String>set=map.keySet();//返回集合中所有对象
        Iterator<String>it=set.iterator();//创建迭代器循环遍历对象
        while(it.hasNext()) {//判断是否有下一个值
            String key =it.next();//拿取下一个值
            String value =map.get(key);//使用get方法
            System.out.println(key+""+value);//输出
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/577673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud + Vue前后端分离-第7章 核心业务功能开发

Spring Cloud Vue前后端分离-第7章 核心业务功能开发 7-1 课程管理功能开发 课程管理页面美化 1.课程管理页面美化 demo-course.jpg 复制search.html中的部分代码 course.vue 看效果 测试一下新增修改删除效果 1.课程管理页面美化2 scoped:style下的样式只应用于当前组件…

docker的一些思考

1.docker是啥&#xff1f; 2.镜像执行流程 3.一些疑惑和解答 1. 2.

喜报频传!百望云获评“2023数字经济独角兽”称号

“数字经济独角兽”是在数字经济领域具备高成长性、高创新性和高潜力性的企业&#xff0c;他们不仅是数字经济的先锋&#xff0c;是科技创新型企业的典范&#xff0c;也是推动经济发展的新兴引擎。 12月20日&#xff0c;“2023数字经济独角兽大会”在北京大兴区成功举办。大会以…

关于Smartbi登录代码逻辑漏洞的动态情报

一、基本内容 近日&#xff0c;思迈特软件核查发现存在“登录代码逻辑漏洞”问题&#xff0c;重点影响范围涉及Smartbi V9及其以上版本。该漏洞可能导致攻击者利用逻辑缺陷对目标系统进行攻击&#xff0c;造成敏感信息泄露和远程代码执行的风险。 二、相关发声情况 Smartbi是…

.NET 7(C#)配置使用log4net日志框架的方法

log4net 是一个高效、灵活且广泛使用的日志记录库&#xff0c;专门用于 .NET 框架。它是 Apache 的一个开源项目Apache log4j框架在Microsoft .NET平台的实现。log4net 旨在提供一个简单、易用但功能强大的日志系统。本文主要介绍.NET 7 中配置使用log4net&#xff0c;以及相关…

电路设计(7)——窗口比较器的multism仿真

1.功能设计 构建一个窗口比较器的电路&#xff0c;在输入电压大于3.5v&#xff0c;小于0.8v时&#xff0c;蜂鸣器报警&#xff0c;输入电压在0.8v到3.5v之间时&#xff0c;不报警。 整体电路如下&#xff1a; 2.设计思路 在输入端&#xff0c;采取电阻分压的方式&#xff0c;输…

【C++】开源:libmodbus通信协议库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍libmodbus通信协议库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#x…

电脑开机快捷启动,启动菜单没有u盘怎么办

电脑开机快捷启动键找不到u盘怎么办 对于快捷启动键找不到u盘的问题&#xff0c;小编很了解其中的门道&#xff0c;因为开机找不到u盘是我们使用电脑时候的常见问题。那么我们到底要如何解决开机找不到u盘的问题呢?其实方法还是蛮简单的&#xff0c;下面小编就来教大家电脑开…

达梦数据库问题集

达梦数据库问题集 1.达梦库实例 页大小 16K 簇大小 32页 列[LINK]附近出现错误: 在使用达梦数据库时&#xff0c;查询SQL中涉及XML,EXCHANGE,DOMAIN,link字段&#xff0c;在达梦中是关键字&#xff0c;SQL报关键词不能使用的错误。文章来源地址:https://www.yii666.com/art…

java数据结构与算法刷题-----LeetCode633. 平方数之和

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 思路一&#xff1a;双指针 可以使用双指针&#xff0c;不断从两个方向匹配…

IP代理科普| 共享IP还是独享IP?两者的区别与优势

通俗地讲&#xff0c;共享IP就像乘坐公共汽车一样&#xff0c;您可以到达目的地&#xff0c;但将与其他乘客共享旅程&#xff0c;座位很可能是没有的。独享IP就像坐出租车一样&#xff0c;您可以更快到达目的地&#xff0c;由于车上只有您一个人&#xff0c;座位是您一个人专用…

ComfyUI激活中文

comfyui中文地址如下&#xff1a; https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translationhttps://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translation如何安装&#xff1f; 1. git安装 进入项目目录下的custom_nodes目录下&#xff0c;然后进入控制台&#xff0c;运…

获取京东商品信息:使用详情API的步骤与技巧

注册并登录京东开放平台&#xff1a;首先&#xff0c;你需要在京东开放平台上注册一个账号并获取必要的API凭证&#xff0c;如appkey和appsecret。构建请求URL&#xff1a;根据京东详情API的文档&#xff0c;确定需要查询的商品类目和商品ID。然后&#xff0c;使用适当的查询参…

近屿智能OJAC第六期AIGC星辰大海:大模型工程师与产品专家深度训练营已拉开序幕

您想成为AIGC大模型领域的佼佼者吗&#xff1f; 近屿智能OJAC第六期AIGC星辰大海&#xff1a;大模型工程师与产品专家深度训练营已拉开序幕&#xff0c;上千名学员已经实现转行、跳槽、升职、加薪&#xff0c;还不赶快行动起来&#xff0c;这是专为您量身定制的AI大模型学习之旅…

Git常用命令分享

Git常用命令分享 1. 初始化一个新的仓库 git init默认初始化的是master分支&#xff0c;如果想指定分支&#xff0c;使用下面命令&#xff1a; git init -b <branch_name>2.克隆一个仓库 git clone <repository_url>从远程仓库克隆代码到本地。 3. 配置 Git 用…

『CVE』简析CVE-2023-48795:SSH协议前缀截断攻击(Terrapin攻击)

文章目录 OpenSSH 9.6更新公告Terrapin攻击 (CVE-2023-48795)基本信息利用手段利用路径利用条件利用原理及示意图危害Terrapin-Scanner 基于Terrapin的潜在风险&#xff1a;CVE-2023-46445 & 46446参考完 OpenSSH 9.6更新公告 *ssh(1), sshd(8): implement protocol extens…

mysql的timestamp字段和serverTimezone的关系

1. mysql中timestamp字段类型的定义&#xff1a;表示从1970年1月1日0点0分1秒开始到存储时间之间的秒数&#xff0c;最高到2038年1月19号3点14分07秒 这个怎么理解呢&#xff1f;就是不管你当前的时区是什么&#xff0c;当你存入一个时间类型的数据的时候&#xff0c;mysql都会…

算法问题:最优二叉搜索树

给定一个序列 有n个有序且各不相同的键&#xff0c; 集合表示在K中成功的搜索的概率; 为n1 个不同的哑键&#xff0c;表示所有在和之间的值&#xff0c; 表示不成功的搜索的概率. 创建二叉搜索树&#xff0c; 使得其期望搜索花费最小。 一个例子 最优子结构 如果一棵最优二叉搜…

udp多播/组播那些事

多播与组播 多播&#xff08;multicast&#xff09;和组播&#xff08;groupcast&#xff09;是相同的概念&#xff0c;用于描述在网络中一对多的通信方式。在网络通信中&#xff0c;单播&#xff08;unicast&#xff09;是一对一的通信方式&#xff0c;广播&#xff08;broad…

某日某条完整逆向分析和数据抓取(最详细逆向实战教程,小白也能看懂)

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 本期文章将带你详细的逆向分析某日某条的URL加密参数,包括如何逆向分析、如何准确的找到加密入口、如何补JS环境、如何模拟执行JS,以及如何用网络劫持简单便捷的获取URL加密参数、接口监听的方式直接获取接口响应数据…