数组
AnyLogic 提供了一系列函数,用于操作 Java 数组(存储原始类型值:int[]、double[] 或某些 Java 类的实例:Object[])。
函数 | 描述 |
---|---|
boolean arrayContains(double[] array, double value) | 如果数组包含给定值,则返回 true。 array — 要扫描的数组 value — 要搜索的值 |
boolean arrayContains(int[] array, int value) | 如果数组包含给定值,则返回 true。 array — 要扫描的数组 value — 要搜索的值 |
boolean arrayContains(Object[] array, Object object) | 如果数组包含给定对象,则返回 true。对象使用 .equals() 函数进行比较。支持任何对象类型的数组。例如,以下代码将打印出 ‘true’:String[] s = new String[]{"a", "b", "c"};traceln(contains(s, "b")); array — 要扫描的数组 object — 要搜索的对象 |
int indexOf(double[] array, double value) | 返回给定值在数组中首次出现的索引。如果未找到值或传递的数组为 null 或空,则返回 -1。 array — 要扫描的数组 value — 要搜索的值 |
int indexOf(int[] array, int value) | 返回给定值在数组中首次出现的索引。如果未找到值或传递的数组为 null 或空,则返回 -1。 array — 要扫描的数组 value — 要搜索的值 |
int indexOf(Object[] array, Object object) | 返回给定对象在数组中首次出现的索引。对象使用 .equals() 函数进行比较。如果未找到值或传递的数组为 null 或空,则返回 -1。支持任何对象类型的数组。例如,以下代码将打印出 ‘1’:String[] s = new String[]{"a", "b", "c"};traceln(indexOf(s, "b"));<br> array — 要扫描的数组 object — 要搜索的对象,可以为 null — 在这种情况下,函数将尝试在给定数组中找到 null 的索引 |
int indexOf(int[] array, IntPredicate test) | 返回数组中匹配值的第一个出现位置的索引。如果没有找到匹配值或传递的数组为 null 或空,则返回 -1。 array — 要扫描的数组 test — 测试表达式,例如 v -> v > 10 |
int indexOf(double[] array, DoublePredicate test) | 返回数组中匹配值的第一个出现位置的索引。如果没有找到匹配值或传递的数组为 null 或空,则返回 -1。 array — 要扫描的数组 test — 测试表达式,例如 v -> v > 10 |
int indexOf(T[] array, Predicate<? super T> test) | 返回数组中匹配对象的第一个出现位置的索引。如果没有找到值或传递的数组为 null 或空,则返回 -1。支持任何对象类型的数组。例如,以下代码将打印出 ‘1’:String[] s = new String[]{"a", "ab", "abc"};traceln(indexOf(s, s -> s.length() > 1)); array — 要扫描的数组 test — 测试表达式。如果传递了 null 而不是predicate,函数将尝试在给定数组中找到 null 的索引 |
int indexOfMax(double[] array) | 返回给定数组中最大值的索引。 array — 要扫描的数组 |
int indexOfMax(int[] array) | 返回给定数组中最大值的索引。 array — 要扫描的数组 |
int indexOfMin(double[] array) | 返回给定数组中最小值的索引。 array — 要扫描的数组 |
int indexOfMin(int[] array) | 返回给定数组中最小值的索引。 array — 要扫描的数组 |
double max(double[] array) | 返回给定数组中的最大值。如果数组只包含 Double.NaN 值,则返回 Double.NaN。如果传递的数组为 null 或空,则抛出错误。 array — 要扫描的数组 |
int max(int[] array) | 返回给定数组中的最大值。如果传递的数组为 null 或空,则抛出错误。 array — 要扫描的数组 |
double min(double[] array) | 返回给定数组中的最小值。如果数组只包含 Double.NaN 值,则返回 Double.NaN。如果传递的数组为 null 或空,则抛出错误。 array — 要扫描的数组 |
int min(int[] array) | 返回给定数组中的最小值。如果传递的数组为 null 或空,则抛出错误。 array — 要扫描的数组 |
如何创建可变长度的数组(用于不确定的列表框)
- 使用ArrayList
ArrayList是Java集合框架的一部分,它提供了动态数组的功能。你可以根据需要添加或删除元素,而不需要担心数组的长度。
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
// 添加元素
list.add("Hello");
list.add("World");
// 假设你不再需要动态长度,可以转换为String[]
String[] array = list.toArray(new String[0]);
// 打印数组内容
for (String str : array) {
System.out.println(str);
}
}
}
- 使用Arrays.copyOf()动态调整数组大小
如果你确实需要使用数组(而不是ArrayList),并且需要在运行时调整其大小,你可以使用Arrays.copyOf()方法。但请注意,这种方法实际上是在创建一个新的数组,并将旧数组的内容复制到新数组中。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] array = new String[2]; // 初始长度为2
array[0] = "Hello";
array[1] = "World";
// 假设需要增加数组长度
array = Arrays.copyOf(array, array.length + 1); // 创建一个新数组,长度为3
// 现在可以安全地添加第三个元素
array[2] = "Java";
// 打印数组内容
for (String str : array) {
System.out.println(str);
}
}
}