Class Order
{
String name;
Order(String n)
{ name = n; }
//setter and getters of name
}
Order a = new Order("same");
Order b = new Order("same");
Order c = new Order("diff");
List<Order> nameList// a,b,c我也想
seperate list of Orders
List<Order> dupList// a,b
List<Order> nondupList// c现在我想检查一下"nameList“的多个顺序中是否有相同的名称。
我使用列表的索引实现了这一点,并与其他索引列表顺序进行了比较。
但有没有其他更好的方法来实现这一点呢?
发布于 2013-02-08 16:03:15
如果您想要使用纯java,请将元素添加到列表中,并使用适当的比较器对其进行sort。然后迭代列表,跟踪前一个元素,进行控制中断;换句话说,如果该元素与前一个元素相同,则这两个元素都是重复的。如果它们不是(或者是第一个),则它们是候选者,您需要等待下一次检查才能找到重复项。
如果不想排序,可以在元素出现时将其添加到集合中;如果在添加元素之前,该元素已经在集合中,则可以将其添加到重复集合中。您可以在两个集合上执行检查,在执行过程中删除,或者从完整集合中删除最后的重复项。你可以使用任何集合,但是Set更有效,因为它有一个快速的包含方法。
如果可以使用库,那么只需使用Guava并将所有内容添加到多集(http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multiset.html ),然后对多集进行迭代,就可以得到每个元素的计数。
https://stackoverflow.com/questions/14767821
复制相似问题