Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        5年前关闭。
                                                                                            
                
        
比方说:

a = ["s", "i", "n", "e", "d"];
b = ["s", "e", "n", "d"];


ab的类型为List<String>

如何确定b中是否所有字母都包含在a中? -不一定按顺序排列(在这种情况下,这是正确的,因为[s,e,n,d]位于ab中)

使用a.containsAll(b)并不总是有效!

另一个例子:

a=["b", "a", "z", "z", "z"]
b=["a", "a", "b", "b"]


在这里,我希望结果为false,因为[a,a,b,b]a中不会以任何顺序出现,但是使用a.containsAll(b)将返回true

最佳答案

尝试这个:

private boolean containsAll(List<?> a, List<?> b) {
    // List doesn't support remove(), use ArrayList instead
    ArrayList<Object> x = new ArrayList<Object>();
    ArrayList<Object> y = new ArrayList<Object>();

    x.addAll(a);
    y.addAll(b);
    for (Object o : y) {
        if (!x.remove(o)) // an element in B is not in A!
            return false;
    }
    return true;          // all elements in B are also in A
}


想法是从b中删除​​a中的每个字母。当您尝试删除不在a中的字母时,会确认a不在b中包含所有字母。

(如果元素存在,则remove()将返回true,否则返回false

10-06 04:57
查看更多