[
https://issues.apache.org/jira/browse/COLLECTIONS-579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14991809#comment-14991809
]
Roger R Andrews commented on COLLECTIONS-579:
---------------------------------------------
Yes, thank you for pointing this out. I don't know how it's never bitten me
before. Sorry for the trouble. Here is the code I should have used first:
{code:title=ByteArray.java|borderStyle=solid}
public class ByteArray {
private volatile int hashCode = 0;
private byte[] bytes = null;
private final Object lock = new Object();
public ByteArray(byte[] bytes) {
this.bytes = bytes;
}
/**
* Redefine the backing array
* @param bytes original array
*/
public void set(byte[] bytes) {
synchronized (lock) {
this.bytes = bytes;
hashCode = 0;
}
}
/**
* @return original backing array
*/
public byte[] get(){
return bytes;
}
@Override
public int hashCode() {
synchronized (lock) {
if (hashCode == 0) {
int hash = 11;
hashCode = 29 * hash +
Arrays.hashCode(this.bytes);
}
}
return hashCode;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final ByteArray other = (ByteArray) obj;
if (!Arrays.equals(this.bytes, other.bytes)) {
return false;
}
return true;
}
}
{code}
> PassiveExpiringMap doesn't work when the key is a byte array
> ------------------------------------------------------------
>
> Key: COLLECTIONS-579
> URL: https://issues.apache.org/jira/browse/COLLECTIONS-579
> Project: Commons Collections
> Issue Type: Bug
> Components: Map
> Affects Versions: 4.0
> Environment: GNU/Linux Ubuntu 15.10 64 bits, OpenJDK 1.8.0_65
> Reporter: Roger R Andrews
>
> When you put a (key,value) pair in a PassiveExpiringMap and the key is byte[]
> you can't retrieve it.
> Code to reproduce the problem:
> byte[] key = {0,0,0,1};
> PassiveExpiringMap<byte[],byte[]> map = new PassiveExpiringMap<byte[],byte[]>
> ();
> map.put(key,key);
> byte[] queryKey = {0,0,0,1};
> //this should be true
> map.containsKey(queryKey) == false
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)