Java等效于C#匿名数组和列表?

灰烬999:

当我需要将数组传递给函数时,C#允许我即时创建数组。假设我有一种叫做的方法findMiddleItem(String[] items)在C#中,我可以编写如下代码:

findMiddleItem(new String[] { "one", "two", "three" });

太棒了,因为这意味着我不必写:

IList<String> strings = new List<String>();
strings.add("one");
strings.add("two");
strings.add("three");
findMiddleItem(strings.ToArray());

糟透了,因为我不太在意strings-这只是一种让我将字符串数组传递到需要它的方法中的结构。我无法修改的方法。

那么如何用Java做到这一点呢?我需要了解数组类型(例如String [])和泛型类型(例如List)。

肖恩·帕特里克·弗洛伊德(Sean Patrick Floyd):

列表和数组本质上是不同的。

A List是一种Collection类型,是接口的实现。
数组是特定于操作系统的特殊数据结构,只能通过特殊语法或本机代码创建。

数组

在Java中,数组语法与您要描述的语法相同:

String[] array = new String[] { "one", "two", "three" };

参考: Java教程>数组

清单

创建列表的最简单方法是:

List<String> list = Arrays.asList("one", "two", "three");

但是,结果列表将是不可变的(或者至少它不支持add()remove()),因此您可以使用ArrayList构造函数调用包装该调用:

new ArrayList<String>(Arrays.asList("one", "two", "three"));

正如乔恩·斯基特(Jon Skeet)所说,番石榴比较漂亮,您可以在那里做

Lists.newArrayList("one", "two", "three");

参考:Java Tutorial > The List InterfaceLists(番石榴javadocs)

VarArgs

关于此评论:

如果我们能够执行findMiddleItem({“ one”,“ Two”,“ three”});会很好。

Java varargs为您提供了更好的选择:

public void findMiddleItem(String ... args){
    //
}

您可以使用可变数量的参数来调用它:

findMiddleItem("one");
findMiddleItem("one", "two");
findMiddleItem("one", "two", "three");

或使用数组:

findMiddleItem(new String[]{"one", "two", "three"});

参考: Java Tutorial > Arbitrary Number of Arguments

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章