java list与Map结合的小应用

本文通过两个示例展示了Java中List和Map集合在数据处理中的作用。第一个例子说明Map如何自动过滤重复数据,而List则能保留重复项。第二个例子是一个模拟随机通话记录并写入CSV文件的场景,利用集合存储和操作数据,提高效率。
摘要由CSDN通过智能技术生成
  • 对于集合的应用在写程序的时候应用的还是很多的,集合在我看来是一个小小的缓存器,它可以存放一些数据,方便我们快速读出,集合在一定程度上加快了数据的读取速度,用两个小案例来体现一下集合的好处吧!
编写一个map集合存放手机号码,判断这个手机号码是否为中奖号码,把一个手机号
码,分割成三部分,如:123 1234 1234
这个手机号,需要把 123 作为第一个 key 把1234 作为第二个map的 key 最后四位作为
map的值,这里我已经将需求的操作简单概述了一下,那接下来我们看一下怎么操作的吧,
这里小编写了两篇,由刚开始的繁琐到最后的流畅版,接下来我们看一下吧!

//从文件中读取数据到数组进行读取分割判断
public static void mapPhone() throws IOException {
        File file = new File("F:/phone.txt");
        FileInputStream in = new FileInputStream(file);
        BufferedInputStream bis = new BufferedInputStream(in);
        byte[] buf = new byte[1024 * 4];
        //list集合可以重复存入数据,不会把相同的数据覆盖掉,map遇到相同的键,会覆
        掉原来的值,这里选择list集合比较合适
        Map<String, List<Map<String, String>>> map = new HashMap<>();
        String[] str = null;
        int length = -1;
        
        while ((length = bis.read(buf)) != -1) {
            String s = new String(buf, 0, length);
//          System.out.println(s);
            str = s.split("\n");
        }
        //        把数据放入到map中
        for (String s : str) {

            Map<String, String> map1 = new HashMap<>();
            List<Map<String, String>> list = new ArrayList<>();

            System.out.println(s);
            String key = s.substring(0, 3);
            String key2 = s.substring(3, 7);
            String value = s.substring(7, 11);
            String s1 = "";

//            判断是否有相同主键的数据
            if (map.containsKey(key)) {

                list = map.get(key);

                for (Map<String, String> listMap : list) {

                    if (listMap.containsKey(key2)) {

                        s1 = listMap.get(key2);
                        map1 = listMap;
                    }
                }
            }
            l
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值