首页 > 其他分享 >字符串的切分及其拓展

字符串的切分及其拓展

时间:2024-10-23 17:12:16浏览次数:5  
标签:map name int 拓展 切分 字符串 com public String

      假如有以下email数据“[email protected],bb@ 163.com,[email protected],..”
 现需要把email 中的用户部分和邮件地址部分分离,分离后以键值对应的方式放入HashMap

思路:我们要将Email的用户部分和邮件地址部分分离,分离后以键值对应的方式放入HashMap,要思考一下怎么将一整个字符变为aa souhu.com... 形式
[email protected],bb@ 163.com,[email protected] -> [email protected] bb@ 163.com [email protected] ->aa sohu.com bb 163.com...形式
需要将字符串变为字符数组,再将字符数组中的字符串,字符化,开始截取;最后对map集合进行遍历进行了

点击查看代码
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo6 {
    public static void main(String[] args) {
        String s = "[email protected],bb@ 163.com,[email protected],..";
        HashMap<Object, Object> map = new HashMap<>();
        String[] s1 = s.split(",");
        for (String str : s1) {
//方法一:
            String name = null;
            String address = null;

            char[] chars = str.toCharArray();
            for (int i = 0; i < str.length(); i++) {
                if(chars[i]=='@'){
                    name = str.substring(0,i);
                    address = str.substring(i+1);
                    map.put(name,address);

方法二:
            String[] split = str.split("@");
            if (!str.equals("...")) {
                map.put(split[0], split[1]);
            }



                }
            }

        }
        Set<Map.Entry<Object, Object>> entries = map.entrySet();
        for (Map.Entry<Object, Object> entry : entries) {
            System.out.println(entry);
        }
    }
}

例题二”需求过长放入下面detail中“

//4.给定一个包含学生姓名和成绩的字符串数组 `students`,格式为“姓名-成绩”,例如:`["Alice-85", "Bob-90", "Charlie-78", "David-92", "Emma-88"]` 。使用 `TreeMap` 来存储学生的姓名和成绩,并实现以下功能:
//1. 按照成绩从高到低的顺序输出学生的姓名和成绩。
//2. 计算并输出平均成绩。
//3. 找出成绩最高的学生姓名和成绩。
//4. 找出成绩最低的学生姓名和成绩。
//
//示例输入
//["Alice-85", "Bob-90", "Charlie-78", "David-92", "Emma-88"]
//
//示例输出
//按照成绩从高到低的顺序:
//David - 92
//Bob - 90
//Emma - 88
//Alice - 85
//Charlie - 78
//平均成绩:86.2
//成绩最高的学生:David - 92
//成绩最低的学生:Charlie - 78

创建学生类

点击查看代码
package com.shujia.demotest;

public class Student implements Comparable<Student>{
    private String name;
    private int age;

    public Student() {

    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return
                name +
                "-" + age
                ;
    }

    @Override
    public int compareTo(Student o) {
        int i = o.getAge() - this.age;
        return (i==0)?o.getName().compareTo(this.name):i;
    }
}//需要重写compare to 方法,实现接口Comparable接口

测试类

点击查看代码
public class Demo2 {
    public static void main(String[] args) {
        TreeMap<String, Integer> map = new TreeMap<>();
        String[] students  = {"Alice-85","Bob-90","Charlie-78","David-92","Emma-88"};
        //TODO:如何将字符串拆分;先把他变成字符串数组,然后再把字符串数组里的字符串进行拆分,将字符串变为char类型
//        for (String student : students) {
//            String name = null;
//            String score = null;
//            char[] chars = student.toCharArray();
//            for (int i = 0; i < student.length(); i++) {
//                if(chars[i]=='-'){
//                    name = student.substring(0,i);
//                    score = student.substring(i+1);
//                    map.put(name,Integer.parseInt(score));
//                }
//            }
//        }
        for (String student : students) {
            String[] s1 = student.split("-");
            map.put(s1[0],Integer.parseInt(s1[1]));
            //根据规律新按照-进行前后拆分,形成了一个新的字符数组是【Alice,85】...   
        }
        sort(map);
        getAvg(map);
        getMax(map);
        getMin(map);

        }
        public static void sort(TreeMap<String, Integer> map){
        //需要通过TreeSet,无法对map直接进行排序
           TreeSet<Student> set = new TreeSet<>();
//            方法一:

//            Set<Map.Entry<String, Integer>> entries = map.entrySet();
//            for (Map.Entry<String, Integer> entry : entries) {
//                String name = entry.getKey();
//                Integer score = entry.getValue();
//                set.add(new Student(name,score));
//
//            }
//            for (Student student : set) {
//                System.out.println(student);
//            }


            //方法二:
            //TODO:通过map的建锁定map的值,通过调用map集合的get(),找到value
            //TODO:总体来说就是遍历map集合,把我们所需要的值塞到set集合
            for (String s : map.keySet()) {
                set.add(new Student(s,map.get(s)));
            }
            for (Student student : set) {

                System.out.println(student);
            }

        }
        public static void getAvg(TreeMap<String, Integer> map){

        int sum = 0;
        int i = 0;
            for (String s : map.keySet()) {
                sum+=map.get(s);
                i++;
            }
            System.out.println("平均成绩:"+sum/(i*1.0));
        }
        public  static void getMax(TreeMap<String, Integer> map){
        //TODO: 我们要确立一个flag(一个标识)让条件执行一次
        int flag = 0;
        int max = 0;
        String name = null;

            for (String s : map.keySet()) {
                if(flag==0){
                    max = map.get(s);
                    flag++;
                }
                else{
                    if(map.get(s)>max){
                        max = map.get(s);
                        name = s;
                    }
                }
            }
            System.out.println("成绩最高的学生:"+name+max);
        }
    public  static void getMin(TreeMap<String, Integer> map){
        int flag = 0;
        int min = 0;
        String name = null;

        for (String s : map.keySet()) {
            if(flag==0){
                min = map.get(s);
                flag++;
            }
            else{
                if(map.get(s)<min){
                    min = map.get(s);
                    name = s;
                }
            }
        }
        System.out.println("成绩最低的学生:"+name+min);
    }


    }

标签:map,name,int,拓展,切分,字符串,com,public,String
From: https://www.cnblogs.com/wangxiaojian-lina/p/18496411

相关文章

  • C# 生成不重复的短字符串
    最近,因工作需要生成一个不重复的随机字符串,园子里查了没有找到合适的。找了其他的作为参考并修改了下,记录一下。///<summary>///可用字符///</summary>staticchar[]sc;///<summary>///起始时间///</summary>staticDateTimestartTime;///<summary>///字符串前缀///<......
  • 代码随想录算法训练营第八天|leetcode344.反转字符串、leetcode541. 反转字符串II、卡
    1leetcode344.反转字符串题目链接:344.反转字符串-力扣(LeetCode)文章链接:代码随想录视频链接:字符串基础操作!|LeetCode:344.反转字符串_哔哩哔哩_bilibili自己的思路:直接使用python的内置函数reverse进行一个操作1.1自己的代码1.1.1python的内置函数classSolution:......
  • MYSQL字符串中根据符号匹配固定字符
    如果您有一个字段存储的是多个值,例如分号分隔的字符串,而您仍然需要进行精准匹配,可以使用FIND_IN_SET函数,但需要注意FIND_IN_SET是基于逗号分隔的字符串。如果您的字段是分号分隔的,可以先将其转换为逗号分隔的字符串。假设users表的roles字段存储的是分号分隔的字符串 ......
  • 字符串哈希 学习笔记
    两种哈希的表示方式。设\(s_i\)为字符串内第\(i\)位,\(h_i\)表示字符串内\([1,i]\)的哈希值,\(p\)为模数,那么第一种哈希方式是:\(h_i=h_{i-1}*p+s_i\),即把\(h_i\)当作一个\(p\)进制数,加入\(s_i\)时在数的末尾。\(h_i=h_{i-1}+s_i*p^{i-1}\),即是在开头加入\(s_i\)......
  • NOIP2024集训Day58 字符串
    NOIP2024集训Day58字符串C.[CEOI2011]Matching发现要做的是排名串的匹配。考虑把它转成这个位置之前有多少个数小于当前这个数,这样就只要每个位置都对应相等的,那就一定是合法的。然后就可以类似KMP的预处理出一个\(nxt\)数组,然后再类似KMP的匹配。因为需要支持动态......
  • 使用 `com.google.gson` 库将 Java 对象转换为 JSON 字符串,并且确保 `data` 字段是 `M
    要使用com.google.gson库将Java对象转换为JSON字符串,并且确保data字段是Map<String,Object>类型的,你可以按照以下步骤编写一个示例代码。这个示例代码将创建一个包含data字段的Java对象,并将data字段初始化为一个Map<String,Object>,然后动态地向其中添加......
  • 华为od面试手撕代码真题题型1——常规字符串,数组,矩阵
    常规字符串,数组,矩阵1实现超长数字减1思路:Java中用BigInteger类publicStringsubOne(Strings){ BigIntegerbi=newBigInteger(s);bi=bi.subtract(BigInteger.ONE);returnbi.toString();}2十八进制数比较大小任意进制的字符串a,转成十进制的数:In......
  • 原生小程序开发拓展能力组件|拓展组件库汇总(五)
    DialogDialog弹窗组件。开发建议客户端有提供会话框的api调用方式,如无特别业务定制需求,推荐优先使用ty.showModal属性列表属性类型默认值必填说明ext-classstring否添加在组件内部结构的class,可用于修改组件内部的样式titlestring否弹窗的标题buttonsarray[]否......
  • 【题解】Solution Set - NOIP2024集训Day58 字符串
    【题解】SolutionSet-NOIP2024集训Day58字符串https://www.becoder.com.cn/contest/5658「CF1466G」SongoftheSirens考虑对于\(s_i\),算钦定必须覆盖到\(t_i\)的匹配个数\(f_i\)。注意到\(s\)每次长度都会\(\times~2\)左右,其长度在\(O(\log|w|)\)的时候就......
  • 简单汇编教程9 字符串与字符串指令
    目录字符串的指令movs字符串传送lods,stos使用cmpsb的使用SCASB的使用字符串你很熟悉了,我们定义了无数次了!%macroANNOUNCE_STRING2 %1db%2 %1_LENequ$-%1%endmacro当然,我们现在来学习一个比较新的定义方式,那就是跟C语言一样安插一个哨兵字符\0......