Compare two List objects for equality, ignoring order [duplicate]

If you want them to be really equal (i.e. the same items and the same number of each item), I think that the simplest solution is to sort before comparing: Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t)) Edit: Here is a solution that performs a bit better (about ten times faster), and only requires IEquatable, not … Read more

Comparing two strings, ignoring case in C# [duplicate]

If you’re looking for efficiency, use this: string.Equals(val, “astringvalue”, StringComparison.OrdinalIgnoreCase) Ordinal comparisons can be significantly faster than culture-aware comparisons. ToLowerCase can be the better option if you’re doing a lot of comparisons against the same string, however. As with any performance optimization: measure it, then decide!

Getting an element from a Set

To answer the precise question “Why doesn’t Set provide an operation to get an element that equals another element?”, the answer would be: because the designers of the collection framework were not very forward looking. They didn’t anticipate your very legitimate use case, naively tried to “model the mathematical set abstraction” (from the javadoc) and … Read more

Create the perfect JPA entity [closed]

The JPA 2.0 Specification states that: The entity class must have a no-arg constructor. It may have other constructors as well. The no-arg constructor must be public or protected. The entity class must a be top-level class. An enum or interface must not be designated as an entity. The entity class must not be final. … Read more

Why do I need to override the equals and hashCode methods in Java?

Joshua Bloch says on Effective Java You must override hashCode() in every class that overrides equals(). Failure to do so will result in a violation of the general contract for Object.hashCode(), which will prevent your class from functioning properly in conjunction with all hash-based collections, including HashMap, HashSet, and Hashtable. Let’s try to understand it … Read more

What issues should be considered when overriding equals and hashCode in Java?

The theory (for the language lawyers and the mathematically inclined): equals() (javadoc) must define an equivalence relation (it must be reflexive, symmetric, and transitive). In addition, it must be consistent (if the objects are not modified, then it must keep returning the same value). Furthermore, o.equals(null) must always return false. hashCode() (javadoc) must also be … Read more