/// <summary> /// Add an element to the tree respecting a size limit /// </summary> /// <param name="results"> the tree to add in </param> /// <param name="result"> the result we try to add </param> /// <param name="num"> size limit </param> private static void BoundedTreeAdd(JCG.SortedSet <Lookup.LookupResult> results, Lookup.LookupResult result, int num) { if (results.Count >= num) { if (results.Min.Value < result.Value) { lock (syncLock) { if (results.Min.Value < result.Value) { // Code similar to the java TreeMap class var entry = results.FirstOrDefault(); if (entry != null) { results.Remove(entry); } } else { return; } } } else { return; } } results.Add(result); }
/// <summary> /// Add an element to the tree respecting a size limit /// </summary> /// <param name="results"> the tree to add in </param> /// <param name="result"> the result we try to add </param> /// <param name="num"> size limit </param> private static void BoundedTreeAdd(JCG.SortedSet <Lookup.LookupResult> results, Lookup.LookupResult result, int num) { if (results.Count >= num) { var first = results.Min; // "get" our first object so we don't cross threads if (first.Value < result.Value) { // Code similar to the java TreeMap class results.Remove(first); } else { return; } } results.Add(result); }