Java Vector 操作2024年9月10日 | 阅读 6 分钟 向量是同时具有大小和方向的数学实体。在计算机编程中,向量通常用于表示同时具有大小和方向的量,例如速度、力 displacement。Java 作为一种流行的面向对象编程语言,通过各种库和 API 内置支持向量运算,使得在 Java 中进行向量计算变得容易。 在本节中,我们将探讨 Java 中的向量运算,包括常见的向量运算,如加法、减法、标量乘法、点积、叉积和归一化。我们还将提供带有输出的示例程序,来说明如何在 Java 中实现这些向量运算。 Java 中的向量加法向量加法是将两个向量合并以获得新向量的过程。在 Java 中,可以使用数组或向量库中的类轻松执行向量加法,例如 `java.util` 包中的 `Vector` 类或 Apache Commons Math 库中的 `Vector3D` 类。 这是一个使用 Apache Commons Math 库中的 `Vector3D` 类演示向量加法的示例程序 VectorAdditionExample.java 输出 Vector1: (2.0, 3.0, 4.0) Vector2: (1.0, -2.0, 3.0) Sum: (3.0, 1.0, 7.0) 使用 Apache Commons Math 库中的 `Vector3D` 类计算两个向量之间角度的另一个 Java 示例 VectorAngleExample.java 输出 Vector1: (2.0, 3.0, 4.0) Vector2: (1.0, -2.0, 3.0) Angle between vectors: 1.282817000215245 radians Angle between vectors: 73.44404571404407 degrees Java 中的向量减法向量减法是查找两个向量之间差的过程。在 Java 中,可以使用数组或向量库执行向量减法,与向量加法类似。这是一个使用 Apache Commons Math 库中的 `Vector3D` 类演示向量减法的示例程序 VectorSubtractionExample.java 输出 Vector1: (2.0, 3.0, 4.0) Vector2: (1.0, -2.0, 3.0) Difference: (1.0, 5.0, 1.0) 使用 Apache Commons Math 库中的 `Vector3D` 类减去两个向量的另一个 Java 示例 VectorSubtractionExample.java 输出 Vector1: (2.0, 3.0, 4.0) Vector2: (1.0, -2.0, 3.0) Difference between vectors: (1.0, 5.0, 1.0) Java 中的向量标量乘法向量的标量乘法是将向量与标量(常数值)相乘的过程。在 Java 中,可以使用数组或向量库轻松执行标量乘法。这是一个使用 Apache Commons Math 库中的 `Vector3D` 类演示向量标量乘法的示例程序 ScalarMultiplicationExample.java 输出 Vector: (2.0, 3.0, 4.0) Scalar: 3 Result: (6.0, 9.0, 12.0) 使用 Apache Commons Math 库中的 `Vector3D` 类进行向量标量乘法的另一个 Java 示例 VectorScalarMultiplicationExample.java 输出 Vector: (2.0, 3.0, 4.0) Scalar: 2.5 Result of scalar multiplication: (5.0, 7.5, 10.0) Java 中的向量点积两个向量的点积是一个标量值,表示它们的模长与它们之间夹角的余弦的乘积。在 Java 中,可以使用数组或向量库轻松计算点积。这是一个使用 Apache Commons Math 库中的 `Vector3D` 类演示两个向量点积的示例程序 DotProductExample.java 输出 Vector1: (2.0, 3.0, 4.0) Vector2: (1.0, -2.0, 3.0) Dot Product: 13.0 不使用任何外部库计算两个向量点积的另一个 Java 示例 VectorDotProductExample.java 输出 Vector1: [2.0, 3.0, 4.0] Vector2: [1.0, -2.0, 3.0] Dot product of vectors: 14.0 Java 中的向量叉积两个向量的叉积是一个垂直于两个输入向量的向量,其模长等于它们的模长与它们之间夹角的正弦的乘积。在 Java 中,可以使用数组或向量库轻松计算叉积。这是一个使用 Apache Commons Math 库中的 `Vector3D` 类演示两个向量叉积的示例程序 CrossProductExample.java 输出 Vector1: (2.0, 3.0, 4.0) Vector2: (1.0, -2.0, 3.0) Cross Product: (6.0, -5.0, -7.0) Java 中的向量归一化向量归一化是将向量转换为单位向量的过程,单位向量的模长为 1,但方向相同。在计算机图形学、物理模拟和机器学习算法等应用中,对向量进行归一化非常有用。在 Java 中,可以使用数组或向量库轻松执行向量归一化。这是一个使用 Apache Commons Math 库中的 `Vector3D` 类演示向量归一化的示例程序 VectorNormalizationExample.java 输出 Vector: (2.0, 3.0, 4.0) Normalized Vector: (0.3713906763541037, 0.5570860145311556, 0.7427813527082074) 结论向量运算在计算机科学、物理学、图形学和机器学习的许多领域都至关重要。Java 提供了多种执行向量运算的方法,包括使用数组或利用 Apache Commons Math 或 JAMA 等向量库。在本文中,我们使用 Apache Commons Math 库探讨了一些常见的向量运算,如向量加法、向量减法、标量乘法、点积、叉积和向量归一化。我们学习了如何创建向量、执行向量运算以及使用带有输出的示例程序获取结果。 向量运算在许多实际应用中起着至关重要的作用。例如,在计算机图形学中,向量运算用于在 3D 环境中表示和操作 3D 对象。在物理模拟中,向量运算用于模拟力、速度和加速度等物理量。在机器学习算法中,向量运算用于表示和操作高维空间中的数据点。理解向量运算并正确实现它们对于在各个领域开发健壮高效的应用程序至关重要。通过本文提供的知识和示例,您现在可以自信地在 Java 中执行向量运算,并在您的应用程序中利用它们来解决现实世界的问题。 下一主题Java 书籍 多线程 |
在本节中,我们将学习如何创建一个 Java 程序来查找三个数字中的最大值。此外,我们还将学习如何使用三元运算符在 Java 中查找三个数字中的最大值。使用三元运算符 在继续学习程序之前,让我们……
阅读 3 分钟
基于哈希的消息认证码 (HMAC) 是一种在通信网络中确保消息完整性和真实性的方法。在 Java 中实现 HMAC 加密使用加密哈希函数来生成特殊代码,该代码可以验证消息的完整性并认证发送者...
阅读 6 分钟
在 Java 中,使用 PushbackReader 类的 read() 方法从流中读取单个字符。能够“撤销”一个字符并在稍后重新处理它,使其能够用于顺序字符读取。此功能在...中非常有用
阅读 4 分钟
集合的幂集表示所有可能子集的集合,包括空集和原集。如果一个集合包含 n 个元素,则幂集将包含 2^n 个子集。这是因为集合中的每个元素都可以...
阅读 8 分钟
? 在 Java 中,包是 Java 类和接口的集合。当我们使用某个包的类时,需要导入定义这些类的特定包。该类使用包含包名的完全限定名称....
阅读 2 分钟
风筝图案是另一种复杂的图案程序,由于其编码复杂性,面试官很少问到。风筝基本上是三个三角形的组合。因此,我们将代码分解为三个部分,即上部、中部和下部。让我们来实现代码...
阅读 2 分钟
在 Java 编程中,标识符通过充当符号名称来帮助识别和使用程序中的不同元素。这些标识符可以代表许多实体,包括类、变量、方法、包、常量等。开发人员可以通过...提高可读性。
阅读 6 分钟
java.text.CollationElementIterator 包含 setOffset() 方法。可以使用 CollationElementIterator 类将迭代器的光标设置为参数指定的索引。语法:public void setOffset(int newOffset) 参数:光标必须设置在该方法接受整数值的位置,...
阅读 2 分钟
这个问题是顶尖 IT 公司(如 Google、Facebook、Amazon 和 Microsoft)在编码面试中通常会问到的最著名的问题。在本节中,我们将创建 Java 程序(不同逻辑),以从给定数组中构建最大数字。例如:输入:{10, 68, 75,...
阅读 3 分钟
给定一个包含整数的数组。还给定一个整数 k。我们的任务是找到一个数组,该数组由最小范围 [lft, rght](包括 lft 和 rght)组成,使得该数组中恰好有 k 个不同的数字...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India