You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by bu...@apache.org on 2001/11/11 03:52:24 UTC
DO NOT REPLY [Bug 4790] New: -
org.apache.avalon.excalibur.collections.ListUtils union method adds duplicate objects
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4790>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4790
org.apache.avalon.excalibur.collections.ListUtils union method adds duplicate objects
Summary: org.apache.avalon.excalibur.collections.ListUtils union
method adds duplicate objects
Product: Avalon
Version: 4.0b3
Platform: PC
OS/Version: Windows NT/2K
Status: NEW
Severity: Normal
Priority: Other
Component: Excalibur
AssignedTo: avalon-dev@jakarta.apache.org
ReportedBy: bill@kelemen-usa.com
I found a bug in org.apache.avalon.excalibur.collections.ListUtils in the union
method (CVS $Revision: 1.2 $ $Date: 2001/08/07 10:57:04):
public static List union( final List list1, final List list2 )
{
final ArrayList result = new ArrayList( list1 );
result.addAll( list2 );
return result;
}
addAll( list2 ) is adding all objects of list2 into the result without checking
if any of these is already in the result. If list1 and list2 have common
objects, then result will have these common objects duplicated. The following
code fixes this:
public static List union( final List list1, final List list2 ) {
final ArrayList result = new ArrayList(list1);
final Iterator iterator = list2.iterator();
while( iterator.hasNext() ) {
final Object o = iterator.next();
if ( !result.contains( o ) ) {
result.add( o );
}
}
return result;
}
I'm using version 4.0.
Bill
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>