list.contains不起作用

时间:2016-03-03 20:21:29

标签: java list contains

我正在尝试使用此API开发Java中的TS3 Bot:https://github.com/TheHolyWaffle/TeamSpeak-3-Java-API

我有一个列表,其中包含客户拥有的所有服务器组:

List<ServerGroup> playerGroups = TS3Bot.api.getServerGroupsByClientId(player.clientdbID);

现在我检查列表是否包含一个组:

if(!playerGroups.contains(TS3Bot.botGroups.get(1))){...}

结果是假的。我100%确定此List包含ServerGroup。

已经与Sysouts一起检查过了。

以下是ServerGroup类的链接:https://github.com/TheHolyWaffle/TeamSpeak-3-Java-API/blob/master/src/main/java/com/github/theholywaffle/teamspeak3/api/wrapper/ServerGroup.java

这只是ServerGroup Object.toString()。

{iconid=0, savedb=1, sortid=0, name=Test 2, n_member_removep=100, sgid=98, type=1, n_member_addp=100, namemode=0, n_modifyp=100}

1 个答案:

答案 0 :(得分:2)

不要忘记尊重Object#equals(Object o)合同

  

指示某个其他对象是否“等于”此对象。等于   method在非null对象上实现等价关系   参考文献:

     

它是自反的:对于任何非空参考值x,   x.equals(x)应该返回true。

     

它是对称的:对于任何非null   参考值x和y,x.equals(y)应该返回true   如果y.equals(x)返回true。

     

它是传递性的:对于任何非null   参考值x,y和z,如果x.equals(y)返回true和   y.equals(z)返回true,然后x.equals(z)应该返回true。

     

它是一致的:对于任何非空引用值x和y,是多个   x.equals(y)的调用始终返回true或一致   如果没有在等于比较中使用的信息,则返回false   对象被修改。

     

对于任何非空参考值x,   x.equals(null)应该返回false。类Object的equals方法   实现最具辨别力的等价关系   对象;也就是说,对于任何非空引用值x和y,这个   当且仅当x和y引用同一个对象(x时)时,该方法返回true   == y的值为true)。

     

请注意,一旦覆盖此方法,通常需要覆盖hashCode方法,因此   保持hashCode方法的一般合同,其中说明   等于对象必须具有相同的哈希码。