[ 
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)

Reply via email to