0

Android LruCache を使用してビットマップをメモリに保存したいのですが、ハッシュ、幅、高さでビットマップを識別します。だから私はこのようなことをしました:

class Key {
    private String hash;
    private int widht, height;
}

LruCache<Key, Bitmap> imagesCache = new LruCache<Key, Bitmap>(1024) {
 @Override
    protected int sizeOf(Key key, Bitmap value) {
        // TODO Auto-generated method stub
        return super.sizeOf(key, value);
    }
}

これは適切な方法ですか?次は何ですか?

前もって感謝します。

4

2 に答える 2

0

だから私は自分自身に答えなければなりません。私はグーグルで検索し、http: //www.javaranch.com/journal/2002/10/equalhash.html で Equals and Hash Code の記事を見つけ、それに従って次のようなことを行いました。

private class Key {
    public Key(String hash, int width, int height, boolean fill) {
        this.hash = hash;
        this.width = width;
        this.height = height;
    }

    @Override
    public int hashCode() {
        int hash = 7;

        hash = 31 * hash + this.width;
        hash = 31 * hash + this.height;

        return hash;
    }

    public boolean equals(Object obj) {

        if(this == obj)
            return true;

        if(obj == null || obj.getClass() != this.getClass())
            return false;

        return this.width == ((Key)obj).width && this.height 
               == ((Key)obj).height && (this.hash == ((Key)obj).hash || 
               (this.hash != null && this.hash.equals(((Key)obj).hash)));
    }

Mabey 私は誰かから使用されます。

于 2013-09-01T00:18:37.870 に答える
0

キーとして使用されるクラスの メソッドequalsとメソッドをオーバーライドする必要があります。hashCodeそれらが一貫していることを確認してください。つまり、 return の場合も同じ値を返す必要がありますequalstruehashCode

于 2013-08-28T15:27:13.060 に答える