jdereg / jdereg/java-util

GraphComparator could not find the new member of ArrayList

Open
#46 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
442
Forks
115
PR merge metrics
No merged PRs in 30d

Description

I am having a problem while using your great library as I want to compare two ArrayLists for differences using GraphComparator. I deleted an element of one of the lists and when I compared the old list and new list it shows that there is OBJECT_ORPHAN command. But when I reversed it by comparing the new list and the old list, it should show that there is a new object but somehow it could not detect.

My code is like this:

List<UnifiedBucket> ubs= new ArrayList<>(); // Assume I already put elements in the list 
List<UnifiedBucket> ubsCopy = cloner.deepClone(ubs);
ubsCopy.remove(25);
ubsCopy.get(14).setRawPolicy(null);
List<GraphComparator.Delta> deltas = GraphComparator.compare(ubs, ubsCopy, getIdFetcher()); //This works fine as I could find the OBJECT_ORPHAN

for (GraphComparator.Delta delta : deltas) {
	if (delta.getCmd() != GraphComparator.Delta.Command.LIST_SET_ELEMENT) {
		System.out.println(delta);
	}
}

List<GraphComparator.Delta> deltas2 = GraphComparator.compare(ubsCopy, ubs, getIdFetcher()); //This does not work fine as I could not find the new element that is not deleted in the ubs list

for (GraphComparator.Delta delta : deltas2) {
	if (delta.getCmd() != GraphComparator.Delta.Command.LIST_SET_ELEMENT) {
		System.out.println(delta);
	}
}

Any reason why?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the provided ArrayList example and inspect GraphComparator.compare with the supplied getIdFetcher in both argument orders. The work is done when the reverse comparison reports the element added to the list, while preserving the existing OBJECT_ORPHAN behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
devtools
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.