【问题标题】:Array declaration using lists使用列表声明数组
【发布时间】:2011-12-12 04:28:21
【问题描述】:

所以我注意到了一些事情。

在codingbat上做递归方法的时候,我看了下:

String abc = "abc";
String mod = abc.substring(1);
System.out.println(mod); //prints "bc"

所以我想:

嘿,为什么不为数组提供类似子字符串的方法?

例如:

String[] abc = {"a", "b", "c"};
String[] mod = abc[1, str.length];
for(int i = 0; i < mod.length; i++){
  System.out.print(mod[i]);
  if(i + 1 != mod.length){
    System.out.print(", ");
  }
}
// This would print out: "b, c"

所以,从这里可以看出,它就像 substring 方法,因为它将第一个数组中的对象添加到第二个数组,从开始索引到结束索引,但不包括结束索引(避免 OutOfBounds 异常) .

这将如何进行,因为我似乎找不到控制“[]”的类,因为必须对它们进行监管,因为它们不仅仅是“那里”,还必须添加它们某种方式。

感谢任何建设性的批评和反馈。

FirexRanger8

【问题讨论】:

    标签: java arrays object substring declaration


    【解决方案1】:

    这将如何进行,因为我似乎找不到控制“[]”的类,因为必须对它们进行监管,因为它们不仅仅是“那里”,还必须添加它们某种方式。

    它们“就在那里”,因为它们被硬编码为语言和平台的一部分。

    如果您想更改语言处理数组的方式,您必须更改 Java 编译器。如果您想更改它们在执行时的行为方式,则必须更改 JVM...

    【讨论】:

    • 嗯,也许我应该把它发给 Java。它确实有应用程序,因为它减少了过多的方法,并且对开发人员来说很容易。感谢您的回答。您可能会看到这是 JDK 和 JRE 6 update 30 ;D
    • @Firexranger8 祝你好运。将人们真正想要的东西导入 Java 已经够难的了。
    • @Firexranger8:我认为这不太可能。有很多关于语言特性的建议,但这似乎只是创建数组的一部分副本的另一种方法……听起来对 方法 来说是件好事。
    • @Jon Skeet:闭包只是创建匿名内部类的另一种方式!一个(希望是显而易见的)笑话;我同意你的看法……
    【解决方案2】:

    它们是 Java 语言规范的一部分,在 Java 中不能更改它们的功能。

    还有其他以 JVM 为目标的语言(即:Groovy),具有类似于 Java 的语言语法,并且支持诸如数组索引之类的覆盖运算符之类的东西。

    但是,它不能在 Java 中完成。

    【讨论】:

      【解决方案3】:

      您不能像 c++ 中那样重载运算符,因此在 java 中无法实现准确的语法。但是 List 接口中已经暴露了一个 subList 函数,也许这就是你想要的?

      如果你有兴趣做这样的事情,你应该看看替代的 JVM 语言,比如 scala 或 groovy,它们有更灵活的语法。例如,参见:

      Slice notation in scala?

      【讨论】:

        【解决方案4】:

        我很确定这是一个已经发明出来的轮子:

        String[] abc = { "a", "b", "c" };
        String[] mod = Arrays.copyOfRange(abc, 1, abc.length); // now mod = [b, c]
        

        【讨论】:

          【解决方案5】:

          java.util.Arrays.copyOfRange 函数将执行您想要的操作(“数组的类似子字符串的方法”)(只是不使用您想要的语法)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多