【问题标题】:Java - quick way of assigning array values to individual variablesJava - 将数组值分配给单个变量的快速方法
【发布时间】:2012-09-01 22:34:36
【问题描述】:

我有一个方法可以返回一个数组中的两个字符串,准确地说是split(str, ":", 2)

在java中有没有比将数组中的两个值分配给字符串变量更快的方法

String[] strings = str.split(":", 2);
String string1 = strings[0];
String string2 = strings[1];

例如有没有类似的语法

String<string1, string2> = str.split(":", 2);

提前致谢。

【问题讨论】:

  • 什么都不会立即浮现在脑海中。但是,我想知道将其分配给这些名称的需要是什么,以及您是否无法使用两个功能对其进行设置。第一个函数可以获取字符串的第一部分,第二个函数可以获取字符串的第二部分。是否有理由不明确地这样做?
  • 不,没有理由不明白。

标签: java arrays syntax variable-assignment


【解决方案1】:

不,Java 中没有这样的语法。

但是,其他一些语言也有这样的语法。示例包括 Python 的元组解包和许多函数式语言中的模式匹配。例如,在 Python 中你可以编写

 string1, string2 = text.split(':', 2)
 # Use string1 and string2

或者在F#中你可以写

 match text.Split([| ':' |], 2) with
 | [string1, string2] -> (* Some code that uses string1 and string2 *)
 | _ -> (* Throw an exception or otherwise handle the case of text having no colon *)

【讨论】:

  • 在 PHP 中,您可以执行 list($foo,$bar,$baz) = array("fred","barney","wilma"); 并返回 foo="fred"、bar="barney" 等。对于具有列数据的拆分函数非常方便。
【解决方案2】:

你可以创建一个持有者类:

public class Holder<L, R> {
    private L left;
    private R right;

   // create a constructor with left and right
}

那么你可以这样做:

Holder<String, String> holder = new Holder(strings[0], strings[1]);

【讨论】:

    【解决方案3】:

    我可以说“使用循环”。可能是 for 循环,可能是 while,这取决于你。如果这样做,则不必担心数组大小。一旦您将数组大小作为“终止条件”传递,它将顺利运行。

    更新:

    我将使用如下代码。反正我没剪过,但我一直用这种风格。

    String[] 字符串 = str.split(":", 2);

    List keepStrings = new ArrayList();
    
    for(int i=0;i<strings.length;i++)
    {
        String string = strings[i];
    
        keepStrings.add(string);
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 2019-12-30
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多