Java 如何将y变量与对象数组中的所有y变量进行比较?
以防万一,这将转化为:Java 如何将y变量与对象数组中的所有y变量进行比较?,java,Java,以防万一,这将转化为: robots[0].y == y? robots[1].y == y? robots[2].y == y? 等等 x也是一样 我知道一定有办法做到这一点,但我的语法不好。以下是我尝试过的: if(robots[].y == y && robots[].x == x){ //SOMETHING HAPPENS } 如果robots数组包含基本类型(或自动装箱类型)数据,则可以使用==符号, 但是,如果robots包含robots,则必须
robots[0].y == y?
robots[1].y == y?
robots[2].y == y?
等等
x也是一样
我知道一定有办法做到这一点,但我的语法不好。以下是我尝试过的:
if(robots[].y == y && robots[].x == x){
//SOMETHING HAPPENS
}
如果robots数组包含基本类型(或自动装箱类型)数据,则可以使用==符号, 但是,如果robots包含robots,则必须使用equals方法,除非要比较两个引用对象,否则还需要使用==符号
for(int i=0;i<robots.length;i++)
if (robots[i]== y ) // To compare primitives or objects reference
for(int i=0;i<robots.length;i++)
if (robots[i].equals (y )) // To compare objects
for(inti=0;i使用Java8+(s)您可以检查每个robotr
是否匹配()如下
或者你想在机器人匹配的地方做点什么,在这种情况下
Stream.of(robots).filter(r -> r.x == x && r.y == y).forEach(System.out::println);
使用循环遍历数组。我假设数组中有y个元素。我不确定y是什么,因此在本例中我将使用int。如果您对y进行注释,我可以帮助您确定y是否为不同的数据类型。比较更高级的数据类型通常不使用“==”
int y=0;//将y设置为要检查的任何整数
for(int i=0;i
您可以使用类似的方法,只需添加for循环:
//robot is your object type
robot robots[]; // assuming you set values for this guy
robot _compare;
_compare.x = 5;
_compare.y = 10;
for (robot rob: robots)
if (rob.y == _compare.y && rob.x == _compare.x)
// Do something
您可以通过实用程序类选择使用反射
import java.lang.reflect.Field;
public final class Util {
public static boolean equalsAll(Object[] array, String fieldName, Object keyField) {
boolean result = false;
for (Object item : array) {
// get class variables
Field[] fields = item.getClass().getDeclaredFields();
for (Field field : fields) {
// check for field-name
if (!field.getName().equals(fieldName)) {
continue;
}
try {
// check for object equality
field.setAccessible(true);
Object object = field.get(item);
if (object != null && object.equals(keyField)) {
result = true;
continue;
}
} catch (Exception e) {
}
}
if (!result) {
return false; // no matching field name/type.
}
}
return result;
}
}
示例语法/用法:
if(Util.equalsAll(robots, "y", y) && Util.equalsAll(robots, "x", x)) {
//do something
}
请更详细地解释您的问题,并提供背景信息。我想我知道您想问什么。如果您想将每个元素的值与特定值进行比较,可以使用某种循环。If
语句的布尔表达式中的语法无效。
import java.lang.reflect.Field;
public final class Util {
public static boolean equalsAll(Object[] array, String fieldName, Object keyField) {
boolean result = false;
for (Object item : array) {
// get class variables
Field[] fields = item.getClass().getDeclaredFields();
for (Field field : fields) {
// check for field-name
if (!field.getName().equals(fieldName)) {
continue;
}
try {
// check for object equality
field.setAccessible(true);
Object object = field.get(item);
if (object != null && object.equals(keyField)) {
result = true;
continue;
}
} catch (Exception e) {
}
}
if (!result) {
return false; // no matching field name/type.
}
}
return result;
}
}
if(Util.equalsAll(robots, "y", y) && Util.equalsAll(robots, "x", x)) {
//do something
}