有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java选择相关对象的前N个元素

我有一个类Product来保存给定产品的特定实例。 这个类有一个与主产品类似的相关产品列表

class Product
{
    public string Name;
    public double Rating;
    public List<Product> RelatedProducts;
    //...
    public List<Product> GetTopRelatedProducts(int N)
    {
        // How to implement this method
        // What I did so far(Bad code)
        //     1- INFINITE RECURSION
        //     2- Can not remember visited objects
        var myList = new List<Product>();
        foreach(Product prod in RelatedProducts)
        {
             myList.AddRange(prod.GetTopRelatedProducts(N));
        }
        return myList.Distinct().OrderByDescending(x => x.Rating).Take(N).ToList();
    }
}

我想在Product类中定义一个方法,以获得顶级的N(最佳评级)相关产品。这个方法应该考虑到RelatedProducts列表中的元素是Product类型的,并且它们也有自己的RelatedProducts列表。所以我应该继续导航嵌套对象,直到所有相关的产品都被访问,然后再使用top N产品。 我的意思是,解决方案不是简单的this.RelatedProducts.OrderByDescending(x => x.Rating).Take(N);

还有一件事需要记住:两种产品可以相互关联。这意味着产品a可以属于产品BRelatedProducts列表,B也可以属于产品aRelatedProducts列表

如何以最佳方式解决这个问题,有什么建议吗

想象一下,我要维护数以百万计的产品。如何递归浏览所有相关产品并识别已访问的产品

我将其标记为C#和Java,因为相同的逻辑可以应用于这两种语言


共 (0) 个答案