gpt4 book ai didi

java - 检查完全包含在其他字符串列表中的字符串列表

转载 作者:行者123 更新时间:2023-12-01 08:57:54 24 4
gpt4 key购买 nike

我编写这段代码是为了检查字符串列表是否完全包含在另一个字符串列表中,在这种情况下删除该列表。

public static void main(String[] args) {
LinkedList<String> l1 = new LinkedList<String>();
LinkedList<String> l2 = new LinkedList<String>();
l1.add("Cc");
l1.add("Dd");
l2.add("Cc");
l2.add("Dd");
l2.add("Ee");
LinkedList<LinkedList<String>> l = new LinkedList<LinkedList<String>>();
l.add(l1);
l.add(l2);
System.out.println("OUTPUT: " + filterSublist(l));

}

static List<LinkedList<String>> filterSublist(LinkedList<LinkedList<String>> l) {
List<LinkedList<String>> uniq = new LinkedList<LinkedList<String>>(l);
l.forEach(elem -> uniq.removeIf(x -> !x.equals(elem) && elem.contains(x)));
return uniq;
}

函数filterSubList应该返回一个字符串列表列表,其中没有完全包含在其他列表中的列表。在示例中,我们有:

  • 列表 1:“抄送、抄送”
  • 列表 2:“抄送、Dd、Ee”

由于列表 1 完全包含在列表 2 中,因此该函数应返回仅包含列表 2 的列表列表。但是当我运行该程序时,我得到的输出是一个包含两者的列表:

OUTPUT: [[Cc, Dd], [Cc, Dd, Ee]]

这是错误的。 filterSubList函数有错误吗?

最佳答案

您正在检查一个列表(对象)是否包含另一个列表(对象)。每当创建新对象时,都会在内存中分配不同的新列表,而是使用 containsAll 检查内部对象:

试试这个:

static List<LinkedList<String>> filterSublist(LinkedList<LinkedList<String>> l) {
List<LinkedList<String>> uniq = new LinkedList<LinkedList<String>>(l);
l.forEach(elem -> uniq.removeIf(x -> !x.equals(elem) && elem.containsAll(x)));
return uniq;
}

如果 Rene 提出了一些与 OP 相关的观点,这里的实现基本上遵循他的指导,但方式不同。

static List<LinkedList<String>> filterSublistAlternate(LinkedList<LinkedList<String>> l) {
boolean[] removed = new boolean[ l.size() ];
outer: for(int i=0; i< l.size() ; i++)
inner: for(int j=0; j< l.size() ; j++)
{
if( i != j )
if(l.get(j).containsAll(l.get(i)))
{
System.out.println(i+" and "+j);
if(l.get(i).size() == l.get(j).size())
if(removed[i] == removed[j] && !removed[i])
removed[i] = true;
else
continue outer;
else
{
removed[i] = true;
continue outer;
}

}
}

for(int i=removed.length-1; i>=0 ; i--)
if(removed[i])
l.remove(i);

return l;
}

关于java - 检查完全包含在其他字符串列表中的字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com