【JAVA练习-----集合API】练习ArrayList 集合、Iterator 迭代器、foreach循环、HashSet的使用。

2023-10-31

实验十四  在项目中使用集合API

一、      实验目的

              练习Java集合API的使用。

二、      实验内容

  练习ArrayList 集合、Iterator 迭代器、foreach循环、HashSet的使用。

实验步骤如下:

一、有 2 个 ArrayList,元素如下: array1 = "a","b","a","c","d",array2="e","f","a","d","g",将两个集合重复项去除后合并成一个集合,并输出集合中的元素。 

(1) 创建 ArrayList array1。 

(2) 使用 add 方法为 array1 存放对应的元素。

(3) 创建 ArrayList array2。 

(4) 使用 add 方法为 array2 存放对应的元素。

(5) 创建 HashSet 用于存放去除重复的元素。

(6) 遍历 array1,获取到每个元素,将每个元素添加到HashSet 中。

(7) 遍历 array2,获取到每个元素,将每个元素添加到HashSet 中。

(8) 输出 HashSet 中去除重复后的元素。

二、利用键盘录入,输入一个字符串,统计该字符串中各个字符的数量如 用 户 输 入 字 符 串 :"hello world java", 程 序 输出结果:h(1)e(1)l(3)o(2) (2)w(1)r(1)d(1)j(1)a(2)v(1)。 

(1)创建键盘输入对象 

(2)使用 nextLine 从键盘中读取一行内容

(3)将字符串转换成字符数组 

(4)创建 map 集合,用来存放字符:key 是字符value 是字符出现的个数

(5)遍历字符数组 

(6)拿到每个字符,去 map 中查看是否有保存对应的次数

(7)如果这个字符没有保存次数,就设置为 1 次

(8)如果这个字符有保存次数,就设置为原来的次数+1 次

(9)按题目要求拼接字符串 

(10)输出结果

三、实验代码

本实验的实验代码如下所示:

import java.util.*;

import static java.util.Arrays.asList;

public class Arraylist_test {
    public static void main(String[] args){
        test1();
        test2();
    }

    public static void test1(){

        // 保存两个列表的数据信息
        String[] str = {"a","b","c","d"};
        String[] str2 = {"e","f","a","d","g"};

        // 将数据保存到集合中
        List array1 = new ArrayList(Arrays.asList(str));
        List array2 = new ArrayList(Arrays.asList(str2));

        // 创建hashset,用于保存数据(hashset具有数据唯一性)
        HashSet hashset = new HashSet<>();

        // 使用迭代器遍历array1
        Iterator iterator = array1.iterator();
        while(iterator.hasNext()){
            hashset.add(iterator.next());
        }

        // 使用迭代器遍历array2
        Iterator iterator1 = array2.iterator();
        while(iterator1.hasNext()){
            hashset.add(iterator1.next());
        }

        // 使用迭代器遍历hashset,将hashset中的数据输出
        Iterator iterator2 = hashset.iterator();
        while(iterator2.hasNext()){
            System.out.println(iterator2.next());
        }
    }

    public static void test2(){
        // 获得从键盘输入的字符串
        Scanner string = new Scanner(System.in);
        System.out.println("请输入一个字符串,后续为您计算每个字符出现的次数");
        String str = string.nextLine();
        // 创建map
        Map map = new TreeMap();
//使用正则表达式,逻辑可以说通,但是由于map.get(c)数据类型不匹配,不可以用于+,所以不采用这一种运算方式。在不强制使用key时,也可以进行数据类型的转换使用此方法(Object-》String-》int)
//        for(char c:chars){
//            map.put(c,map.get(c) != null ? map.get(c):1);
//        }
//        System.out.println(map.toString());

        // 计算key出现的次数,并进行保存
        for(int i=0;i<str.length();i++){
            char key = str.charAt(i);
            if(map.get(key)==null){
                map.put(key,1);
            }
            else{
                int num = Integer.parseInt(String.valueOf(map.get(key)));
                num = num+1;
                map.put(key,num);
            }
        }
        System.out.println(map.toString());
    }
}

四、实验总结

对于实验1:

        本实验去重并不是通过去重算法实现的,本实验中借助hashset的数据唯一性,将两个ArrayList中的数据输入到hashset中完成数据的去重工作。

对于实验2:

        对于实验2,主要容易出现问题的地方在于:map.get(key),该函数的参数是Object,该函数在key出现过的返回值也为Object,而我们需要进行key出现次数的累加,就需要进行数据类型的转换,我们需要把map.get(key)从Object转为String,然后再将String转为int类型,进行+1操作,完成key出现次数的增加。

        数据类型转换代码如下:

Integer.parseInt(String.valueOf(map.get(key)))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【JAVA练习-----集合API】练习ArrayList 集合、Iterator 迭代器、foreach循环、HashSet的使用。 的相关文章

随机推荐

  • hadoop之HBase

    传统的关系型 按行存储 行结构是固定的 即使你不用 也必须空到那里 而不能没有 此非关系型数据库 是按列来存储的 不会造成空间浪费 HBase的目标是管理超级大表 数十亿行 数百万列 模仿谷歌的BigTable 底层使用HDFS Hbase
  • 体验ChatGPT在具体应用场景下的能力与表现——vuedraggable的move多次触发问题

    当下人工智能模型在满天飞 今天拿一个具体的应用场景 来体验下ChatGPT的能力与表现 看看是否能解决实际问题 顺便填一下之前遇到的一个具体的坑 vuedraggable的move多次触发问题 背景 背景是这样的 实现低代码开发平台过程中
  • 论文笔记:CVPR2021 OTA: Optimal Transport Assignment for Object Detection

    proporse 利用全局信息 一对多的进行标签匹配 label assignment related work fixed label assignment anchor based 以IOU阈值判断 anchor free 如FCOS
  • 代码托管/版本控制工具:Git的安装和使用

    目录 一 Git的下载和安装 二 Git基本配置 三 代码上传到远程仓库 四 代码下载到本地 一 Git的下载和安装 1 登录GitHub官网https github com 注册账户密码 2 登录https git scm com dow
  • 企业如何有效进行远程控制权限管理?向日葵权限管理能力解析

    企业对于远程控制这一技术的管理 主要分为两部分 一种管理的目的是提升效率 另一种的目的是降低风险 我们这里着重聊聊后者 企业管理远控行为 核心关键词是 权限 通过不同的权限策略和能力 企业可以塑造一个行之有效的远控体系 作为国民级的专业远程
  • Node.js 是个啥?

    趣学 Node js 死月 掘金小册带你重新体悟 Node js 之美 趣学 Node js 由死月撰写 1923人购买https s juejin cn ds SYVvuDw 在这里 我们先装作对 Node js 不了解 从头来过吧 你有
  • 语音识别&文本转换语音(TTS) C#代码

    前一段时间做过语音识别 因为时间比较紧 所以就在网上找了一些代码用上了 发现些的很复杂 现在想要把语音识别应用到Unity项目中来 所以又梳理了一下发现其实微软已经给我们封装了很好类库 下面是采用的微软的Speech SDK5 1 数据库采
  • C++/C#类型大小汇总

    基本类型 类型 含义 字节数 最小值 最大值 sbyte c 有符号的8位整数 1 128 127 byte c 无符号的8位整数 1 0 255 short 有符号的16位整数 2 32768 32767 ushort 16位无符号整数
  • Bluetooth 蓝牙介绍(二):低功耗蓝牙BLE协议栈

    文章目录 Physical LAYER Link LAYER 角色 地址 物理信道 Air Interface Packet PDU Advertising physical channel PDU Primary Advertising
  • android library中引入aar提示找不到

    除了在library的build gradle中加入 repositories flatDir dirs libs 注意注意 还需要在application的build gralde中加入 repositories flatDir dirs
  • 在屏幕上输出以下图案 使用两个循环可以解决 include
  • 数据链路层及交换机工作原理

    目录 一 帧格式 1 1 帧头类型字段的作用 1 2 MAC地址 1 3 MTU值 二 交换机工作原理 2 1 交换机的端口 2 2 端口状态 三 交换机基本工作模式及命令 3 1 交换机的工作模式 3 2 命令 一 帧格式 其中类型是指
  • MyEclipse 10 安装教程(公开版)

    MyEclipse 10 安装教程 公开版 一 下载安装 首先提供我使用的 myeclipse 10 安装包以及 快乐 文件https download csdn net download m0 66309026 84879064 1 双击
  • 第十三讲:MSTP技术应用

    学校因为教师的人数越来越多 部门逐渐也增多 各部门之间都已经采用了vlan技术 但为了实现公司的稳定性和消除内部网络的环路 管理员小赵配合飞越公司去实现学校内部网络时刻不间断 来保证公司网络的运行 为了解决校园网的需求 飞越公司决定采用基于
  • 【北大MOOC】时间复杂度的计算

    文章目录 1 函数渐近的界 2 函数渐近的界的定理 3 几类重要的函数 4 序列求和的方法 4 1 等差 等比数列与调和级数 4 2 估计和式上界的放大法 4 3 用积分估计和式渐近的界 5 迭代法求解递推方程 5 1 迭代法 5 2 换元
  • 标准正态分布表_机器学习

    前言 最近帮别人搞了jionPoint统计癌症趋势 朋友问了 标准正态分布表到底是怎么算出来的 研究了一下 主要还是通过泰勒公式迭代法求出来的 目录 1 计算原理 2 代码实现 一 计算原理 从图上很明显可以看到 书上的计算过程通过 这里
  • SpringBoot使用Driud连接数据库(仅配置测试连接,通过配置类方法配置)

    1 下载SpringBoot官网下载SpringBoot项目 start spring io 2 使用sts工具 通过导入maven项目 将下载好的项目导入 sts工具下载地址 https spring io tools 目录结构如下 3
  • 部署一个私人网站需要会用到什么工具?

    要部署私人网站 你可能需要学习以下工具 服务器操作系统 如 Ubuntu CentOS 等 你需要会在服务器上安装软件和维护系统 网络配置 你需要会进行网络配置 使得网站可以被外界访问 Web 服务器软件 如 Apache Nginx II
  • JavaScript数组reduce()方法详解及奇淫技巧

    一 前言 reduce 方法接收一个函数作为累加器 数组中的每个值 从左到右 开始缩减 最终计算为一个值 reduce 可以作为一个高阶函数 用于函数的 compose reduce 方法可以搞定的东西 for循环 或者forEach方法有
  • 【JAVA练习-----集合API】练习ArrayList 集合、Iterator 迭代器、foreach循环、HashSet的使用。

    实验十四 在项目中使用集合API 一 实验目的 练习Java集合API的使用 二 实验内容 练习ArrayList 集合 Iterator 迭代器 foreach循环 HashSet的使用 实验步骤如下 一 有 2 个 ArrayList