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

实验十四  在项目中使用集合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)))

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值