2017-09-22 33 views
0

Apache CollectionUtils.isEqualCollectionを使用して2つのコレクションを比較する必要があります。EquatorをCollectionUtils.isEqualCollectionで使用して2つのコレクションを比較する

public boolean isTheSame(Compress compr); 

をしかし、私は私のコードに赤道を追加する方法のアイデアを持っていない: は、彼らは、同じインターフェイスの圧縮を持っていると比較する方法があります。ドキュメントから

isEqualCollection(Collection<? extends E> a, Collection<? extends E> b, Equator<? 
super E> equator) 
Returns true iff the given Collections contain exactly the same elements with exactly the same cardinalities. 

マイコード:

return CollectionUtils.isEqualCollection(filtLst3, filtLst4, equator); 

は、私は私のコレクションクラスでは赤道のメソッドを置くべきか? それとも私は、この(コードを動作していない)のような何か書くべきことがあります私は本当にすべての助けに感謝します

... 

    Eq equator = new Eq<Compress>(); 
    return CollectionUtils.isEqualCollection(filtLst3, filtLst4, equator); 
} 

public static class Eq<Compress> implements Equator { 

    public boolean equate(Object o1, Object o2) { 
     Compress c1 = (Compress) o1; 
     Compress c2 = (Compress) o1; 

     return c1.isTheSame(c2); 
    } 

    public int hash(Object o) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

} 

を!ここで

+0

あなたは '私は私のコレクションのclasses'に赤道のメソッドを置くべきであるとはどういう意味ですか? – Dimitri

+0

私のクラスがEquatorを実装するようにすればいいのですか? – Lev

+0

お選びくださいか? – Dimitri

答えて

1

は一例です:

public boolean isTheSame(Collection<? extends Compress> a, Collection<? extends Compress> b) { 
     Equator<Compress> compressEquator = new CompressEquator(); 
     return CollectionUtils.isEqualCollection(a, b, compressEquator); 
} 

    public static class CompressEquator implements Equator<Compress> { 

    public boolean equate(Compress c1, Compress c2) { 
     return c1.isTheSame(c2); 
    } 
    // 
    } 
} 
関連する問題