栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

三合会不露面打架吗?(Java集缺少项目)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

三合会不露面打架吗?(Java集缺少项目)

问题是,三合会不会出现在战斗中。实际上,在doBattle()开始时立即打印gangs.size()会返回3而不是4。为什么?

双方

triads
grovestreet
有9所以他们来讲等于强度
Gang.compareTo
(实现
Comparable
)。因此,一个中只允许一个
TreeSet

如果您不想删除按排序顺序重复的项目,请不要使用

TreeSet

编辑:

ComparableGang
接口说明指示了所期望的:

public interface ComparableGang extends IGang, Comparable<IGang> {}

你的

compareTo
方法确实 不是 靠力量才下订单-
订单“的标识(名称)”。老实说,它首先是一个非常愚蠢的接口,因为
asoft
创建一个类
public class GangNameComparator :Comparator<IGang>
,然后将其作为树集的比较器(如果他们想按名称排序)将非常容易。

但是,由于他们建议您实施比较,因此您需要按照界面说明进行操作:

public int compareTo(IGang g) {    return name.compareTo(g.getName());}

但是…正如您在评论中(以及Rob的回答中所指出的)所指出的,这与约定俗称的

IGang
描述相矛盾:

public interface IGang {        public int compareTo(IGang g);}

ComparableGang
既要实现自己的文档又要满足文档是不可能的
IGang
。从asoft的角度来看,这基本上是通过设计打破的。

任何代码都应该能够使用

IGang
实现,
了解
IGang
并依赖
IGang
合同之后的实现。但是,asoft通过在扩展接口中要求不同的行为打破了这一假设
IGang

这本来是合理的为他们增添 了更多的要求

ComparableGang
,只要他们没有违反 现行 的规定
IGang

请注意,这是C#和Java之间的重要区别。在C#中,两个具有相同签名的不同接口中的两个函数可以组合为一个继承两个函数的接口,并且这两种方法保持不同且可访问。在Java中,这两种方法由于完全是抽象的并且具有相同的签名,因此被视为相同的方法,而实现组合接口的类仅具有一个这样的方法。因此
在Java中

ComparableGang
是无效的,因为它不能具有满足ComparableGang协定和IGang协定的compareTo()实现。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号