Java - 将数组值分配给单个变量的快速方法

Posted

技术标签:

【中文标题】Java - 将数组值分配给单个变量的快速方法【英文标题】:Java - quick way of assigning array values to individual variables 【发布时间】: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);

提前致谢。

【问题讨论】:

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



【讨论】:

以上是关于Java - 将数组值分配给单个变量的快速方法的主要内容,如果未能解决你的问题,请参考以下文章

一维数组和面向对象基础知识

将数组文字分配给 Liquid 模板中的变量

java.util.Arrays.fill方法

Java方法中传递数组与改变数组值的问题

Java方法中传递数组与改变数组值的问题

java 值传递 数组传递