【问题标题】:remaining indecies in list in c#c#中列表中的剩余索引
【发布时间】:2014-11-21 19:24:42
【问题描述】:

我有一个“itemset”类列表,我称之为frequentItemsets,它包含数据库中的所有频繁项目集和另一个整数列表,我称之为“index_of_sensitiveItemsets”,其中包含frequentItemsets列表中敏感频繁项目集的indecies和它是由用户定义的。

喜欢这个

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 列表中的frequentItemsets 中剩余元素的indecies(索引的复数)。

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

 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();
    }

非常感谢

【问题讨论】:

  • 看起来您需要显示更多与您的问题相关的代码,这两种单独的方法是什么样的......? itemset 类的结构是什么样的......??
  • 我建议不要存储敏感项目集的索引,而是存储项目集的唯一标识符。这样,如果频繁项集的顺序发生变化,您的代码将更加健壮并且不易中断。这也将允许您相当轻松地编写 Linq 查询来完成此任务。
  • @SquidScareMe - 好地方 - 我只是假设索引是关键(如数据库标识列)。很好的推荐。
  • 请问唯一标识符之类的,我认为在列表中获取元素的最快方法是通过索引
  • @RationalRose - 你能展示使用项集的样子吗(就像 DJ Kraze 所问的那样)?谢谢。

标签: c# indexing


【解决方案1】:

这取决于敏感项集与频繁项集的比率。如果 50% 以上的频繁项集是敏感项集,则更有意义的是反转问题并将所有频繁项集复制到非敏感​​项集,然后删除所有敏感项集中不存在的项。

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

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多