示例#1
0
    public void Add(T a, Y b)
    {
        AgePair <T, Y> newPair = new AgePair <T, Y> {
            A = a, B = b
        };

        var younger = GetYounger(newPair.A);

        foreach (var v in younger)
        {
            if (v.B.CompareTo(newPair.B) >= 0)
            {
                return;
            }
        }

        var elder = GetElder(newPair.A);
        List <AgePair <T, Y> > toDelete = new List <AgePair <T, Y> >();

        foreach (var v in elder)
        {
            if (v.B.CompareTo(newPair.B) <= 0)
            {
                toDelete.Add(v);
            }
        }
        foreach (var v in toDelete)
        {
            m_List.Remove(v);
        }
        m_List.Add(newPair);
        m_List.Sort(CompareA);
    }
示例#2
0
    public void Add(T a, Y b)
    {
        AgePair <T, Y> newPair = new AgePair <T, Y> {
            A = a, B = b
        };

        // Get all elements that are younger
        var younger = GetYounger(newPair.A);

        // Find any of the younger with a higher score
        // If found, return without inserting the element
        foreach (var v in younger)
        {
            if (v.B.CompareTo(newPair.B) >= 0)
            {
                return;
            }
        }
        // Cache elements to delete
        List <AgePair <T, Y> > toDelete = new List <AgePair <T, Y> >();

        // Find all the elder elements
        var elder = GetElder(newPair.A);

        // Find all elder elements with a lower B
        foreach (var v in elder)
        {
            if (v.B.CompareTo(newPair.B) <= 0)
            {
                // Mark for delete
                toDelete.Add(v);
            }
        }
        // Delete those elements found above
        foreach (var v in toDelete)
        {
            m_List.Remove(v);
        }
        // Add the new element
        m_List.Add(newPair);
        // Sort the list (ascending by A)
        m_List.Sort(CompareA);
    }
示例#3
0
 private static int CompareA(AgePair <T, Y> item1, AgePair <T, Y> item2)
 {
     return(item1.A.CompareTo(item2.A));
 }