Java 存储字符串列表的最佳方法

Java 存储字符串列表的最佳方法,java,arrays,string,Java,Arrays,String,存储和读取一个很长的字符串的最好方法是什么,每个条目都是另一个数组的索引 现在我有这个 String indices="1,4,6,19,22,54,....." 这个字符串有多达十万个条目,所以我想也许我可以使用像链表这样的数据结构。有人知道使用一个会不会更快吗 List List=new ArrayList(); List<String> list = new ArrayList<String>(); list.add("1"); list.add("2");

存储和读取一个很长的字符串的最好方法是什么,每个条目都是另一个数组的索引

现在我有这个

String indices="1,4,6,19,22,54,....."
这个字符串有多达十万个条目,所以我想也许我可以使用像链表这样的数据结构。有人知道使用一个会不会更快吗

List List=new ArrayList();
List<String> list = new ArrayList<String>();

list.add("1");
list.add("2");
列表。添加(“1”); 列表。添加(“2”);

您需要声明字符串类型的arraylist。然后添加到它。

这取决于您将如何处理字符串(索引)和相应的数组。此外,这将取决于你将如何访问它们

我建议您首先阅读一篇关于java实现的数据结构的概述,特别是在

我们可以提供一些建议,但您必须向我们提供更多信息,特别是我在开头提到的信息(您想要什么,这些数据将如何存储和访问,等等)


例如,如果您需要快速访问索引数据,那么字符串甚至不是最好的方法。也许地图会更好。例如,索引可以是键,索引数组可以是映射的值。但这只是一个空洞的示例,我强烈建议您提供更多信息。

我非常喜欢使用ArrayList类,如果您喜欢使用arrays、ArrayList或Collections框架的任何成员,可以使用它。会很好用的。为了你想做的事

ArrayList<String> indices = new ArrayList<String>();
indices.add("");
ArrayList index=new ArrayList();
指数。加上(“”);

我也有类似的预感,我想喜欢1k个字符串并解析它们(搜索目的是知道它是否包含项)

因此,我发现没有使用java集合框架,而是使用映射、集合或列表

如果我将数据简单地存储在数组中,并开始使用for循环解析数据,则速度更快。

您访问此链接并查看我们以微秒计算的实际输出

所以在未排序的数组中,使用简单的蛮力是胜利者 (通常我们有)


但是如果数组被排序,
arrays.BinarySearch()
是赢家。

为什么要更快?对于序列化而言,
字符串
将比任何其他字符串都快。但是,对于访问,与某种列表相比,它可能非常慢。如果它们都是指向其他内容的索引,则可以使用hashmapArrayList,它比LinkedList更快,占用的内存更少。@ValekHalfHeart不一定,
ArrayList
s需要定期增加处理多个插入的容量。引用文档:“应用程序可以在使用ensureCapacity操作添加大量元素之前增加ArrayList实例的容量。这可能会减少增量重新分配的数量。”@mbatchkarov Yes,我假设列表已初始化,以便后续的重新分配将保持在最低限度。我了解链表和数组列表,但不确定是否应该使用它们。我基本上需要从头到尾遍历字符串。对,但是使用这个字符串是否比使用单个字符串并拆分成十万个条目更快?基本上我需要遍历整个字符串。