Why is this an issue?
The time complexity of method calls on collections is not always obvious. For instance, for most collections the
size() method takes
constant time, but the time required to execute
ConcurrentLinkedQueue.size() is O(n), i.e. directly proportional to the number of
elements in the collection. When the collection is large, this could therefore be an expensive operation.
This rule raises an issue when the following O(n) methods are called outside of constructors on class fields:
Noncompliant code example
ConcurrentLinkedQueue queue = new ConcurrentLinkedQueue();
log.info("Queue contains " + queue.size() + " elements"); // Noncompliant