我正在寻找最短的方法(在代码中)初始化字符串列表和字符串数组,即包含“ s1”,“ s2”,“ s3”字符串元素的列表/数组。
有多种选择。我个人喜欢使用番石榴:
List<String> strings = Lists.newArrayList("s1", "s2", "s3");
(当然,番石榴是值得拥有的图书馆:)
仅使用JDK,您可以使用:
List<String> strings = Arrays.asList("s1", "s2", "s3");
请注意,这将返回一个ArrayList
,但这 不是 正常的java.util.ArrayList
-这是一个内部变量,该变量是可变的但固定大小。
就我个人而言,我更喜欢Guava版本,因为它可以清楚说明正在发生的事情(将返回的列表实现)。如果您静态导入方法,也 仍然 清楚发生了什么:
// import static com.google.common.collect.Lists.newArrayList;
List<String> strings = newArrayList("s1", "s2", "s3");
…而静态导入asList
则显得有些奇怪。
番石榴的另一个选择,如果您不想以任何方式修改列表:
ImmutableList<String> strings = ImmutableList.of("s1", "s2", "s3");
通常我想 要么 有一个完全可变的列表(在这种情况下Lists.newArrayList
是最好的), 或
完全不可变列表(在这种情况下ImmutableList.of
是最好的)。很少有我真正 想要 可变但固定大小的列表。
问题内容: 我用下面的代码。两者在我的应用程序中都运行良好。 情况1。 情况2 但是我有一些问题: 在性能方面哪个更好? 在哪种情况下,请选择案例2? 问题答案: 情况2在性能上是更好的BUT:它返回一个大小不变的List。意味着您不能在其中添加/删除元素: 返回由指定数组支持的 固定大小的 列表。(将返回的列表更改为“直写”到数组。)
问题内容: 我知道对于上面的第3个初始化,字符串对象在字符串池中初始化,而第4个与字符串池无关。 1.和2有 什么区别?如果我将其视为指针变量,它存储的是特定内存地址,而该内存地址从未被JVM或OS使用? 4.和5 之间有区别吗? 当我打印和通过直接和,对,我甚至无法通过compilation.For ,编译OK,我得到“空”,并在控制台窗口中的输出。为什么? @aioobe的答案后编辑:更多问题
我需要用大量的整数值预先填充列表。 除了迭代,还有更快的方法吗? 当前代码: 此代码位于一个非常频繁创建的类的构造函数中,因此我希望它尽可能高效(read:性能而不是代码行)
在我的应用程序中,一切正常,但我想提高性能并优化我的代码。 这两个哪个更适合 1.initialisation 2.连接
问题内容: 显然,javac中初始化字符串的大小受到限制。谁能帮助我确定最大限额? 谢谢 编辑: 我们正在构建一个初始化字符串,看起来像这样的“ {1,2,3,4,5,6,7,8 ......}”,但理想情况下应包含10,000个数字。当我们为1000执行此操作时,10,000会引发错误,提示代码对于try语句而言太大。 为了产生这种效果,我们使用了一个stringbuilder并在附加值的数组上
问题内容: 我收到了一个字符串列表作为输入,需要返回具有这些相同字符串但随机顺序的列表。我必须允许重复- 同一字符串在输入中可能出现一次或多次,并且在输出中必须出现相同的次数。 我看到了几种“强力”方法(使用循环,禁止使用),我目前正在使用其中一种。但是,知道Python可能会完成一项工作,对吧? 问题答案: