我有以下课程:
class Sport {
    private String sportsName;
    private List<People> peopleWhoPlayThissport;
    //...
}
class People {
    private String name;
    private long uniqueId;
   // ...
}

我的输入是运动对象列表,为简单起见,请考虑以下示例:

sport1 - Football,<Sam,Dylan>
sport2 - Basketball,<Tyler,John>
sport3 - Baseball,<Carter,Dylan>
sport4 - Hockey,<Kane,Michael>
sport5 - Soccer,Frank>

我必须创建一个列表< List<>>,这样内部列表就是所有具有至少一个普通玩家的体育项目(此处适用传递属性).在上面的例子中,输出应该是,

<<sport1,sport3,sport5>,<sport2>,<sport4>>

有关解决此问题和/或伪代码的任何建议吗?

解决方法

对我来说听起来像图形问题.
我要做的是:

>创建一个图形(无向),其中人是节点,到目前为止没有边缘
>我会经历体育运动,对于每项运动,如果他们进行相同的运动,我会在人与人之间做一个优势(例如,当处理运动1时,它会在Sam和Dylan之间产生优势,当处理运动3时,它会在Dylan之间产生优势和卡特)
>作为最后一步,我将采用最终图形的组成部分(在您的示例中,Sam-Dylan-Carter-Frank,Kane-Michael,Tyler-John)和“将运动应用于他们” – 这意味着对于每个男孩/女孩组件,我会将他/她所做的所有运动添加到“内部”列表中(我更喜欢Set,所以每项运动都有一次).

所以图表会以这种方式增长:

>加工足球:Sam-Dylan
>加工篮球:Sam-Dylan,Tyler-John
>加工棒球:Sam-Dylan-Carter,Tyler-John
>加工曲棍球:Sam-Dylan-Carter,Tyler-John,Kane-Michael
>处理足球:Sam-Dylan-Carter-Frank,Kane-Michael

和“运动”:

> Sam(足球),Dylan(足球,棒球),Carter(棒球,足球),Frank(足球)=> (足球,棒球,足球)
>泰勒(篮球),约翰(篮球)=> (篮球)
>凯恩(曲棍球),迈克尔(曲棍球)=> (曲棍球)

==> (足球,(篮球),(曲棍球)

编辑:
您可以选择优化每个组件的算法,您将记住与之相关的运动.换句话说,在创建边缘时,您将为该组件的运动集合添加运动.然后将不再需要“应用运动”步骤.一个简单的规则,当两个组件连接时,您将在添加新运动之前结合运动系列.然后算法会:

>加工足球:Sam-Dylan(足球)
>加工篮球:Sam-Dylan(足球),Tyler-John(篮球)
>加工棒球:Sam-Dylan-Carter(足球,Tyler-John(篮球)
>处理曲棍球:Sam-Dylan-Carter(足球,Tyler-John(篮球),Kane-Michael(曲棍球)
>处理足球:Sam-Dylan-Carter-Frank(足球,Kane-Michael(曲棍球)

请注意,图表的使用不是必需的.您仍然可以使用简单的集合,但图表似乎是最干净的方法和算法最佳方式.它还允许进一步的可扩展性,因为它以自然的方式对数据进行建模 – 例如,您可以进一步找出Sam与Carter在一起的原因(因为他们的共同朋友Dylan与他们两人一起玩不同的运动).

java – 对象分组的算法的更多相关文章

  1. 在android的数组列表中添加项目

    我想增加从android的文本视图到现有数组list.e.g的值.我当前的数组列表包含值Cricket,Football和文本视图我想在最后位置添加数组列表中的曲棍球..然后我的阵列列表成为板球,足球,曲棍球.我的板球和足球阵列列表来自之前的活动.但现在它只添加板球和足球,但不添加曲棍球我该怎么做?解决方法这肯定对你有用……

  2. Python Pygame实战之趣味篮球游戏的实现

    这篇文章主要为大家分享了一个基于Python和Pygame实现的一个趣味篮球游戏,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考一下

  3. php – 如何从足球[足球]结果的mysql表中即时输出一个积分表?

    并计算目标得分和目标?首先联合分数表一起交换hometeam与远程和交换目标数.这给你一些容易聚合的源数据,生成记分卡的查询是这样的:

  4. angularjs – 是否有代理解析/拒绝对Angular $q延迟的承诺的快捷方式?

    鉴于一个未解决的延迟和一个可能的承诺(承诺),可能会或可能不会延期,是否有办法将承诺“代理”到延期?

  5. java – 对象分组的算法

    我有以下课程:我的输入是运动对象列表,为简单起见,请考虑以下示例:我必须创建一个列表,这样内部列表就是所有具有至少一个普通玩家的体育项目.在上面的例子中,输出应该是,有关解决此问题和/或伪代码的任何建议吗?

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部