两个相似的静态方法优化

下面这两个方法的实现代码能不能优化一下,我觉得两个方法的代码太相似了,是不是能把相同的代码提取出来。

   public static String joinArray(String separator, Object[] s) {
        if (s == null || s.length == 0)
            return "";
        StringBuilder sb = new StringBuilder();
        sb.append(s[0]);
        for (int i = 1; i < s.length; ++i) {
            if (s[i] != null) {
                sb.append(separator);
                sb.append(s[i].toString());
            }
        }
        return sb.toString();
    }
    
    public static String joinArray(String separator, int[] s) {
        if (s == null || s.length == 0)
            return "";
        StringBuilder sb = new StringBuilder();
        sb.append(s[0]);
        for (int i = 1; i < s.length; ++i) {
            sb.append(separator);
            sb.append(s[i]);
        }
        return sb.toString();
    }
阅读 3.1k
4 个回答

没什么好办法,要么传Integer数组,统一用object[]对象,要么就像你这样写2个重载方法
你想多了Integer比int之间性能没那么严重,除非你代码对tps非常敏感,才传int[],如果为了代码传Integer没什么影响的

没想到特别好的办法,要么把参数写再一起,传值的时候传Null的不解析.

要么就 Integer[] a = {1,2,3,4,5,6,7,8,9};这样构造数组,可以统一使用object这个参数类型,但是总感觉浪费了内存.

等待大神回答吧

把参数改成Object,不用数组类型,在方法体里面判断吧。

用 guava 就可以了。不用自己再去写吧?

Joiner.on(",").join(Arrays.asList(1, 5, 7)); // returns "1,5,7"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题