zoukankan      html  css  js  c++  java
  • 重写trim方法时摸索出的删除数组长度的思路

    先说下我重写trim()的思路:###

    • trim()功能:清除字符串前后两端的'空格'
    • 我分了前后两步处理:
      • 前缀空格:判断是空格,遍历数组,用后一位元素替换前一位,遍历一次所有元素前移一位,最后一位设为空格符,留给处理后缀空格的部分解决(开始还傻不拉几地将元素赋值为类型的初始值,混淆了初始值也可以是元素值);
      • 后缀空格:也是设循环,判断最后一位是否为空格。如果是将数组长度减1,即丢弃最末尾的空格元素;
        • 具体思路:
          当循环条件判断出结果为空时,声明一个新数组,并对其动态初始化,长度为原数组的长度-1(即 原数组.length-1);再用新数组的长度设置循环条件,通过遍历将原数组元素对应赋值给新数组元素;最后,直接把新数组的引用赋值给原数组(相当于就有两个引用指向同一片堆内存空间,也可以在原数组指向新数组后对新数组的引用赋值为null,等待垃圾回收器GC清理即可);至此,原数组引用所指向的数组内容就是去掉最后一位空格元素的了。

    简单说就是把一个数组的数据复制到比它长度小1的数组中,而后再用原来的数组引用去指向新数组。

    @Test
        public void overTrim(){
            String str = "   12 345 abc de   ";
            //将String转换成char[]
            char[] ch = str.toCharArray();
            int count = 0;
            while(count<ch.length){
    
                //前缀
                while (ch[0] == 32){
                for (int i = 0; i < ch.length-1; i++) {
                            ch[i] = ch[i+1];
                        }
                        ch[ch.length-1] = 32;
                    }
                //尾部
                while (ch[ch.length-1] == 32){
                    //新建一个临时数组,长度比原数组-1,用于接收原数组的数据
                    char[] ch2 = new char[ch.length-1];
                    for (int i = 0; i < ch2.length; i++) {
                        ch2[i] = ch[i];
                    }
                    ch = ch2;//将原数组引用指向新数组的地址,转型成功!
                    ch2 = null;//此时ch2就成了多余的引用了,赋值为null即为无用引用,交给GC处理
                }
                count++;
                }
            String str2 = String.valueOf(ch);
            System.out.println(str2);
            }
    }
    

    手打空格也行' ',不过看不见的东西总容易出错,我就用空格在ASCII码中对应十进制数32

  • 相关阅读:
    安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
    VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
    数据库的交互模式 常用的dos命令 (第一天)
    Validate US Telephone Numbers FreeCodeCamp
    Arguments Optional FreeCodeCamp
    Everything Be True FreeCodeCamp
    Binary Agents FreeCodeCamp
    Steamroller FreeCodeCamp
    Drop it FreeCodeCamp
    Smallest Common Multiple FreeCodeCamp
  • 原文地址:https://www.cnblogs.com/csyh/p/12271602.html
Copyright © 2011-2022 走看看