gpt4 book ai didi

java - 检查 2 个数组以查看它们是否具有相同的值?

转载 作者:行者123 更新时间:2023-11-30 03:54:43 24 4
gpt4 key购买 nike

我想比较两个数组,看看它们是否具有相同的值。

如果我有一个名为

的数组
public static float data[][]

它保存地形的 Y 坐标,我如何用另一个数组检查该数组

public static int coords[][]

不迭代所有坐标?

两个数组都有超过 1000 个值。迭代它们不是一个选择,因为我必须每秒迭代它们四次以上。

我这样做是为了尝试查找两个对象是否发生碰撞。我已经尝试使用库来实现此目的,但是我找不到像我需要的那样具体的每坐标碰撞检测。

编辑:为什么我无法迭代这么少量的顶点是这样的。问题是,这是一个多人游戏,我必须遍历每个玩家的所有 1000 个坐标。这意味着只有 10 名在线玩家就是 10,000 名玩家,100 名在线玩家就是 100,000 名玩家。您可以看到这很容易出现滞后或至少占用很大比例的 CPU。

将坐标输入“Data”变量:

try {
// Load the heightmap-image from its resource file

BufferedImage heightmapImage = ImageIO.read(new File(
"res/images/heightmap.bmp"));
//width = heightmapImage.getWidth();
//height = heightmapImage.getHeight();
BufferedImage heightmapColour = ImageIO.read(new File(
"res/images/colours.bmp"));
// Initialise the data array, which holds the heights of the
// heightmap-vertices, with the correct dimensions
data = new float[heightmapImage.getWidth()][heightmapImage
.getHeight()];
// collide = new int[heightmapImage.getWidth()][50][heightmapImage.getHeight()];
red = new float[heightmapColour.getWidth()][heightmapColour
.getHeight()];
blue = new float[heightmapColour.getWidth()][heightmapColour
.getHeight()];
green = new float[heightmapColour.getWidth()][heightmapColour
.getHeight()];
// Lazily initialise the convenience class for extracting the
// separate red, green, blue, or alpha channels
// an int in the default RGB color model and default sRGB
// colourspace.
Color colour;
Color colours;
// Iterate over the pixels in the image on the x-axis
for (int z = 0; z < data.length; z++) {
// Iterate over the pixels in the image on the y-axis
for (int x = 0; x < data[z].length; x++) {
colour = new Color(heightmapImage.getRGB(z, x));

data[z][x] = setHeight;

}
}
}catch (Exception e){
e.printStackTrace();
System.exit(1);
}

以及如何将坐标放入“coords”变量中(哦等等,它被称为“Ship”,而不是coords。我忘了):

try{
File f = new File("res/images/coords.txt");
String coords = readTextFile(f.getAbsolutePath());

for (int i = 0; i < coords.length();){
int i1 = i;
for (; i1 < coords.length(); i1++){
if (String.valueOf(coords.charAt(i1)).contains(",")){
break;
}
}
String x = coords.substring(i, i1).replace(",", "");
i = i1;
i1 = i + 1;
for (; i1 < coords.length(); i1++){
if (String.valueOf(coords.charAt(i1)).contains(",")){
break;
}
}
String y = coords.substring(i, i1).replace(",", "");;
i = i1;
i1 = i + 1;
for (; i1 < coords.length(); i1++){
if (String.valueOf(coords.charAt(i1)).contains(",")){
break;
}
}
String z = coords.substring(i, i1).replace(",", "");;
i = i1 + 1;
//buildx.append(String.valueOf(coords.charAt(i)));
////System.out.println(x);
////System.out.println(y);
////System.out.println(z);
//x = String.valueOf((int)Double.parseDouble(x));
//y = String.valueOf((int)Double.parseDouble(y));
//z = String.valueOf((int)Double.parseDouble(z));
double sx = Double.valueOf(x);
double sy = Double.valueOf(y);
double sz = Double.valueOf(z);
javax.vecmath.Vector3f cor = new javax.vecmath.Vector3f(Float.parseFloat(x), Float.parseFloat(y), Float.parseFloat(z));
//if (!arr.contains(cor)){
if (cor.y > 0)
arr.add(new javax.vecmath.Vector3f(cor));


if (!ship.contains(new Vector3f((int) sx, (int) sy, (int) sz)))
ship.add(new Vector3f((int) sx, (int) sy, (int) sz));
//arr.add(new javax.vecmath.Vector3f(Float.parseFloat(x), Float.parseFloat(y), Float.parseFloat(z))); }谢谢!

最佳答案

您可以这样做,但仅适用于相同的数据类型。

 Arrays.deepEquals(data, coords);

对于一维数组,您可以使用此

 Arrays.equals(array1, array1);

关于java - 检查 2 个数组以查看它们是否具有相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23516030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com