9.6. Determining the Number of Times an Item Appears in an ArrayList
Problem
You need the number of occurrences of one
type of object contained in an ArrayList
. The
ArrayList
contains methods, such as
Contains
and
BinarySearch
to
find a single item. Unfortunately, these methods cannot find all
duplicated items at one time—essentially, there is no
count all functionality. If you want to find
multiple items, you need to implement your own routine.
Solution
The following class inherits from the ArrayList
class in order to extend its functionality. Two methods are added to
return the number of times a particular object appears in a sorted
and an unsorted
ArrayList
:
using System; using System.Collections; public class ArrayListEx : ArrayList { // Count the number of times an item appears in this // unsorted or sorted ArrayList public int CountAll(object searchValue) { int foundCounter = 0; for (int index = 0; index < this.Count; index++) { if (this[index].Equals(searchValue)) { foundCounter++; } } return (foundCounter); } // Count the number of times an item appears in this sorted ArrayList public int BinarySearchCountAll(object searchValue) { // Sort ArrayList this.Sort( ); bool done = false; int count = 0; // Search for first item int center = this.BinarySearch(searchValue); int left = center - 1; int right = center + 1; int position = -1; if (center >= 0) { // Increment counter for found item ++count; // Search to the left do { if (left < 0) { done = true; } else { if (this[left].Equals(searchValue)) ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.