セットでremoveが呼び出された場合、HashSetのcontainsAllメソッドの一貫性が維持されないのに対し、HashMapのcontainsValueメソッドは、値が削除された後も一貫性を維持します。 HashMapの場合と同様に、containsValueメソッドは正しい値を返します
public static void main(String[] args)
{
HashSet<String> lookup=new HashSet<String>();
HashMap<Integer,String> findup=new HashMap<Integer,String>();
String[] Alltokens={"This","is","a","programming","test","This","is","a","any","language"};
for(String s:Alltokens)
lookup.add(s);
String[] tokens={"This","is","a"};
Collection<String> tok=Arrays.asList(tokens);
lookup.remove(Alltokens[5]);
if(lookup.containsAll(tok))
System.out.print("found");
else
System.out.print("NOT found");
Integer i=0;
for(String s:Alltokens)
findup.put(i++,s);
boolean found=true;
findup.remove(Alltokens[0]);
findup.remove(5); //Edit : trying to remove value whose key is 5
for(String s:tokens)
if(!findup.containsValue(s))
found=false;
System.out.print("\nIn map " + found);
}
マップに出力が見つかりませんtrue
HashSetでremoveメソッドが呼び出された場合にcontainsAllの一貫性を維持する方法はありますか?また、セットに存在しなかった値がメソッドを削除するために渡された場合。ContainsAllは一貫性を保ちます
lookup.remove("Alltokens[5]");
if(lookup.containsAll(tok))
//これはtrueになりますが、すでに存在する値が削除された場合はfalseになります
HashMapsのキーで何かをしなければならず、HashSetのキーではないのかもしれませんが、それらがどのように機能するか説明していただけますか?