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 - 将数组值分配给单个变量的快速方法的主要内容,如果未能解决你的问题,请参考以下文章