Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查数组中同一对象的多个实例_Java_Arrays_List_Object_Duplicates - Fatal编程技术网

Java 检查数组中同一对象的多个实例

Java 检查数组中同一对象的多个实例,java,arrays,list,object,duplicates,Java,Arrays,List,Object,Duplicates,我正在寻找一种方法来检查数组是否包含同一对象的多个实例。我一直在四处寻找,但在javadoc和stackoverflow中似乎找不到任何东西 我正在创建一个垄断棋盘游戏(或者用丹麦语,斗牛士),根据玩家拥有的场地数量,登陆其中一个场地的费用会有所不同 我在我的玩家类中有一个列表,其中我列出了玩家购买的所有字段: public List<OwnableField> ownsList = new ArrayList<>(); public void buy(O

我正在寻找一种方法来检查数组是否包含同一对象的多个实例。我一直在四处寻找,但在javadoc和stackoverflow中似乎找不到任何东西

我正在创建一个垄断棋盘游戏(或者用丹麦语,斗牛士),根据玩家拥有的场地数量,登陆其中一个场地的费用会有所不同

我在我的玩家类中有一个列表,其中我列出了玩家购买的所有字段:

   public List<OwnableField> ownsList = new ArrayList<>();

    public void buy(OwnableField ownable) {
       pay(ownable.getPrice());
       ownsList.add(ownable);
    }

如果定义了正确的等于和哈希代码,那么可以使用集合来实现这一点

List list = ...

if(new HashSet(list).size().equals(list.size()){
//same size
} else {
//there was a duplicated element
}
如果只想检查一个特定对象,则可以使用:

final Object someObject = ...
List list = ...
int size = FluentIterable.from(list).filter(new Predicate<Object>() {
        @Override
        public boolean apply(Object input) {
            return input == someObject;
        }
    }).size();
if(size > 1) { 
//there is a duplicated element
}

如果定义了正确的等于和哈希代码,那么可以使用集合来实现这一点

List list = ...

if(new HashSet(list).size().equals(list.size()){
//same size
} else {
//there was a duplicated element
}
如果只想检查一个特定对象,则可以使用:

final Object someObject = ...
List list = ...
int size = FluentIterable.from(list).filter(new Predicate<Object>() {
        @Override
        public boolean apply(Object input) {
            return input == someObject;
        }
    }).size();
if(size > 1) { 
//there is a duplicated element
}

假设您只想检查一个对象的多个实例,对吗
for(OwnableField o:ownsList)if(o MyObject的instanceof)计数器+++
但实际上,mate。您应该找到另一种替代
redier
的方法。。他们很烂。没有人想买。是的,我只想检查一件物品是正确的,谢谢!而且这是学校的作业,所以我真的没有选择的余地。这些领域实际上是啤酒厂领域,而不是再干燥器领域——而且啤酒厂领域更糟糕:)我不确定我确切地了解它是如何工作的,以及如何实施它。按照我的理解,第一个:(OwnableField o:ownsList)将扩展类OwnableField并位于ownsList数组中的所有对象存储到一个名为o的变量中?然后检查刚才存储在o中的任何对象是否是我们正在查找的对象的实例,然后为每个对象添加1到计数器中,每个对象都是myObject的实例?您正在运行一个循环。您告诉函数体
if(MyObject的o instanceof)计数器+++
的运行次数与
ownsList
集合中的
OwnableField
的运行次数相同。因此,您不必检查存储在
o
中的“any”对象是否是MyObject的实例;您多次检查存储在
o
中的对象是否为-。我假设您只想检查一个对象的多个实例是否正确
for(OwnableField o:ownsList)if(o MyObject的instanceof)计数器+++
但实际上,mate。您应该找到另一种替代
redier
的方法。。他们很烂。没有人想买。是的,我只想检查一件物品是正确的,谢谢!而且这是学校的作业,所以我真的没有选择的余地。这些领域实际上是啤酒厂领域,而不是再干燥器领域——而且啤酒厂领域更糟糕:)我不确定我确切地了解它是如何工作的,以及如何实施它。按照我的理解,第一个:(OwnableField o:ownsList)将扩展类OwnableField并位于ownsList数组中的所有对象存储到一个名为o的变量中?然后检查刚才存储在o中的任何对象是否是我们正在查找的对象的实例,然后为每个对象添加1到计数器中,每个对象都是myObject的实例?您正在运行一个循环。您告诉函数体
if(MyObject的o instanceof)计数器+++
的运行次数与
ownsList
集合中的
OwnableField
的运行次数相同。因此,您不必检查存储在
o
中的“any”对象是否是MyObject的实例;检查存储在
o
中的对象是否为-多次。