[
https://issues.apache.org/jira/browse/JCR-3833?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15224153#comment-15224153
]
Unico Hommes commented on JCR-3833:
-----------------------------------
[~takahito.kikuchi] I sill have doubts that with this method of first copying
the keys we're not introducing performance degradation. To show you the
alternative here is a unit test with the idea of counting and skipping
unremovable items:
{code:java}
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class MapTest {
private final Map<Integer, Integer> map = new LinkedHashMap<Integer,
Integer>() {
@Override
public Integer remove(final Object key) {
final int i = (Integer) key;
// some items cannot be removed..
if (i % 2 == 0) {
return null;
}
return super.remove(key);
}
};
@Before
public void initMap() {
for (int i = 0; i < 10; i++) {
map.put(i,i);
}
}
@Test
public void testIterRemove() {
int counter = 0;
Iterator<Map.Entry<Integer, Integer>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
final Map.Entry<Integer, Integer> next = iter.next();
if (map.remove(next.getKey()) == null) {
counter++;
}
iter = map.entrySet().iterator();
skip(counter, iter);
}
assertEquals(5, map.size());
}
private void skip(final int counter, final Iterator<Map.Entry<Integer,
Integer>> iter) {
for (int j = 0; j < counter; j++) {
if (iter.hasNext()) {
iter.next();
} else {
break;
}
}
}
}
{code}
> Compatibility with Java 8
> -------------------------
>
> Key: JCR-3833
> URL: https://issues.apache.org/jira/browse/JCR-3833
> Project: Jackrabbit Content Repository
> Issue Type: Task
> Reporter: Unico Hommes
> Assignee: Unico Hommes
> Fix For: 2.9.1, 2.8.1
>
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)