The decision of whether something has been modified or not is best left to a collection of objects that can perform change-tracking or dirty-checking. Your view model is not the best place for this.
Having a collection of classes called your "Domain Model" containing business logic and utilizing an Object Relational Mapper (ORM) can do the dirty checking of the Domain Models instead of the view model.
It is not the view model. Its the model of the mvc.
Ruby on Rails first popularized this, but having one collection of "models" for your entire application has some drawbacks, mainly that display and formatting logic gets mixed in with business logic. This is why in recent years "view models" have become more popular, with "domain models" containing the business logic. If you do have this separation, the change tracking you desire can be accomplished with an ORM like Entity Framework or NHibernate.
Object Change Tracking and Optimistic Concurrency from Microsoft starts in the right direction, but is a bit much for your application. Really, searching for c# object change tracking in your search engine of choice can give you some good examples. After a quick search, the ChangeTracking NuGet package looks like a good candidate.
The main idea is that something else is monitoring the values of your object before and after an operation to see what has changed, so that your models/view models/domain models don't have to manually detect these changes.
The model is based on events. A dirty check should be performed, but when? Something could go wrong if I try to access data between an edition and a dirty check.
In that case, reading the Microsoft article I posted above might be your best option. Judging by the names of your methods in your code example, you appear to be using Java. While the Microsoft article focuses on C#, the same basic principles apply to Java. A search for java object change tracking might also lend itself to more specific solutions for your technology stack.