当前位置: 首页 > 面试题库 >

从列表Java获取包含子列表的索引

琴刚豪
2023-03-14
问题内容

我的字符串列表如下所示:

 List<String> parentDataList:  {"this", "is", "a", "test", "string", "and", "a", "test", "other"} 
 List<String> child1:   {"a", "test"}
 List<String> child2:   {"this", "string"} 
 List<String> child3:   {"is", "a", "test"}

我的期望是,我想检查父列表是否包含 序列 子列表,然后基于子列表获取父列表中的开始索引和结束索引。
从上面的示例:

 Parent contain child1 list, and return the indexes: [2 - 3] and [6 - 7]
 Parent doesn't contain child2 list because it isn't sequential.
 Parent contain child3 list, and return the index: [1 - 3]

我尝试使用List.containsAll方法,但它不在乎列表项的顺序,因此无法从此方法获取开始和结束索引。
我正在寻找最快的方法,因为我的列表中有很多数据,而且我必须从许多输入字符串中进行搜索。
任何帮助,将不胜感激!

更新
我需要获取所有子列表的索引都包含在父列表中。例如,父级在两个位置包含child1:[2-3]和[6-7]


问题答案:

该方法Collections.indexOfSubList将为您提供所需的信息。

返回指定目标列表在指定源列表中第一次出现的起始位置,如果没有出现,则返回-1。更正式地,返回最低索引i,这样source.subList(i,i +
target.size())。equals(target)或-1(如果没有这样的索引)。(如果target.size()>
source.size(),则返回-1。)

int index=Collections.indexOfSubList(parentDataList, child1);
…

索引间隔将是从index,包括,到index+child1.size(),排除。-1当然,除非返回的索引是。在后一种情况下,找不到子列表。



 类似资料:
  • 问题内容: 我正在尝试检索目录中的所有图像,包括所有子目录。我目前正在使用 这可行,但是结果是: 我希望它一次执行整个目录分支,因此结果是: 非常感谢您的帮助,欢呼! 附注:如果我只需将所有子目录都包含在投资组合下,而不必用通配符具体说明每个目录,那也很好。 问题答案: 从示例

  • 问题内容: 我说有Python清单。我也有一个索引列表,例如。如何获取带有索引的元素的列表? 问题答案: 您可以使用 列表推导 来获取该列表: 这等效于: 输出: 注意: 请记住,这是用于访问特定索引中a元素的表示法。

  • 问题内容: 我有一个Java API,它返回的列表如下: 我正在使用以下scala代码: 现在,如果我尝试使用scala语法糖,例如: 这是行不通的。我得到错误: 看来我需要将Java列表转换为Scala列表。在上述情况下该怎么做? 问题答案: 从 Scala 2.8开始, 此转换现在已使用以下语言构建: 作品。不工作 在2.12.x中使用 在2.13.x中使用

  • 我在数据库中有一个包含(id、日期、类别、行、持续时间)的表,我每天都有许多注册表,例如(1,12/12/2014,cat1,ligne1,12)(2,12/2014,cat2,ligne1,10)(3,12/12/2014,cat3,ligne2,23) (4,13/12/2014,cat1,LINGE1,10)(5,13/12/2014,cat2,LINGE1,20)(6,13/12/2014

  • 我定义了一个配置,其中包含每个表的列列表,用作dedup键 例如:配置1: 这些列需要用作重复数据消除键。这个列表是动态的,有些表中有1个值,有些表中有2或3个值 我想做的是从这个列表中建立一个键列 我如何使这个动态的列表适用于任意数量的列。我试过这么做 为了实现这一点,我必须将列表转换为Df,列表中的每个值都需要在单独的列中,我无法理解这一点。 试过这么做但没用 欢迎任何意见,谢谢

  • 问题内容: 是否可以获得与特定模式匹配的索引列表,例如 这是获取索引列表的方法: 但是我找不到过滤它们的方法,因此该列表仅包含匹配“ my_index_nr_1 ”的索引,其中“ ”是通配符 解 在使用ES一段时间后,这里是我现在使用的东西,希望它能对其他人有所帮助: 您也可以在末尾添加,以得到结果中每一列的标题。 问题答案: 使用_aliases命令有一个巧妙的技巧,当与通配符结合使用时(下面)