c#中列表中剩余的索引

时间:2014-11-21 19:24:43

标签: c# indexing

我有一个类'itemset'的列表,我称之为frequentItemsets,它包含数据库中的所有频繁项集和另一个整数列表,我将其称为'index_of_sensitiveItemsets',其中包含frequencyItemsets列表中敏感的Frequent Itemsets的缺陷和它由用户定义。

像这样

List<Itemset> frequentItemsets = get_frequentItemsets_fromDB();
List<int> index_of_sensitiveItemsets  = get_senFrqItemsetIndex_from_user();

这个问题的一个解决方案是这样的:

        for (int i = 0; i < allfrequentItemsets.Count - 1; i++)
                    {
                       if (! index_of_sensitiveItemsets.Contains(i))
                            index_of_nonsensitiveItemsets.Add(i);
                    }

但我问是否有更好的方法来获取不在index_of_sensitiveItemsets列表中的exceptItemsets中剩余元素的indecies(复数索引)。

类Itemset是从spmf java库加载的。它有两个成员:整数和整数支持数组以及许多类似的方法:

 public class Itemset : AbstractOrderedItemset
    {
        public int[] itemset;
        public int support;

        public Itemset();
        public Itemset(int item);
        public Itemset(int[] items);

        public virtual Itemset cloneItemSetMinusAnItemset(Itemset itemsetToNotKeep);
        public virtual Itemset cloneItemSetMinusOneItem(Integer itemToRemove);
        public override Integer get(int position);
        public override int getAbsoluteSupport();
        public virtual int[] getItems();
        public virtual void increaseTransactionCount();
        public virtual Itemset intersection(Itemset itemset2);
        public virtual void setAbsoluteSupport(Integer support);
        public override int size();
    }

提前多多感谢

1 个答案:

答案 0 :(得分:0)

它取决于sensitiveItemSets与frequentItemSets的比率。如果超过50%的frequentItemSets是sensitiveItemSets,则更有意义的是反转问题并将所有的frequentItemSets复制到nonsensitiveItemSets,然后删除所有不存在于sensitiveItemSets中的那些。

无论哪种方式,它不太可能有比你写的更好的代码构造。是的,您可以使用一些花哨的Linq在较少的代码行中执行它,但您的代码是明确且易于理解的。我会坚持你所拥有的,除非你能提供一些进一步的信息,表明它在某种程度上表现不佳。