get/set:遍历数组查找equals的对象并返回index
时间: 2024-01-10 16:02:18 浏览: 78
以下是一个示例的 Java 代码实现:
```
public static int findIndex(Object[] array, Object obj) {
if (array == null || obj == null) {
return -1;
}
for (int i = 0; i < array.length; i++) {
if (obj.equals(array[i])) {
return i;
}
}
return -1;
}
```
这个方法接收一个 Object 类型的数组和一个要查找的对象 obj,然后遍历数组,每次比较 obj 和当前遍历到的数组元素是否相等,如果相等就返回当前下标 i,否则继续遍历,直到遍历完整个数组。
如果数组为 null 或者 obj 为 null,那么直接返回 -1,表示没有找到。
相关问题
array list get/set:遍历数组查找equals的对象并返回index
可以使用Java中的ArrayList类来实现遍历数组查找equals的对象并返回index的功能。ArrayList类提供了get()和set()方法,可以通过索引访问和修改元素。
以下是一个示例代码:
```java
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// 创建一个包含Person对象的ArrayList
ArrayList<Person> persons = new ArrayList<>();
persons.add(new Person("Alice", 25));
persons.add(new Person("Bob", 30));
persons.add(new Person("Charlie", 35));
persons.add(new Person("David", 40));
// 查找名字为"Bob"的Person对象,并返回其在列表中的位置
int index = findIndex(persons, new Person("Bob", 30));
System.out.println("Index of Bob: " + index);
// 将名字为"David"的Person对象修改为年龄为50
int davidIndex = findIndex(persons, new Person("David", 40));
persons.set(davidIndex, new Person("David", 50));
// 输出修改后的列表
System.out.println(persons);
}
/**
* 遍历ArrayList查找equals的对象并返回其在列表中的位置
*
* @param list ArrayList
* @param obj 要查找的对象
* @param <T> 对象类型
* @return 对象在列表中的位置,如果未找到返回-1
*/
public static <T> int findIndex(ArrayList<T> list, T obj) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals(obj)) {
return i;
}
}
return -1;
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public boolean equals(Object obj) {
if (obj instanceof Person) {
Person other = (Person) obj;
return this.name.equals(other.name) && this.age == other.age;
}
return false;
}
public String toString() {
return "Person{name=" + name + ",age=" + age + "}";
}
}
```
在上面的例子中,我们创建了一个包含Person对象的ArrayList,并使用findIndex()方法查找名字为"Bob"的Person对象的位置。由于Person类重写了equals()方法,所以可以使用ArrayList的get()方法遍历列表并比较每个元素是否与目标对象相等。如果找到了相等的对象,就返回其在列表中的位置;否则返回-1。接着,我们使用set()方法将名字为"David"的Person对象的年龄修改为50,并输出修改后的列表。
private ShortAndLowFlyTradeNode buildTree(List<FlightDateAndAirport> stopFlight, PassengerParam passengerParam, ShortAndLowFlyTradeNode root, Set<String> usedStopFlight) { for (int i = 1; i < stopFlight.size(); i++) { ShortAndLowFlyTradeNode temp = new ShortAndLowFlyTradeNode(2, passengerInfoMapper.getPassengerInfo(passengerParam, stopFlight.get(i)), null); if (root.getShortTrade().getArriveAirThreeCode().equals(stopFlight.get(i).getDepartAirThreeCode()) && stopFlight.get(i).getDepartTime().after(root.getShortTrade().getETA())) { //子节点 System.out.println(stopFlight.get(i).getFlightNumber() + "是" + root.getShortTrade().getFlightNumber() + "的后续航程"); //前端要空数组,所以给个初始化 temp.setNode(new ArrayList<>()); root.getNode().add(temp); //添加进已使用的中转航程集合中 usedStopFlight.add(temp.getShortTrade().getFlightNumber()); } else { //叶子节点 root = addChild(root, temp, usedStopFlight); } } return root; }
这段代码是一个构建树的方法。它接收一个包含航班日期和机场信息的列表 `stopFlight`,乘客参数 `passengerParam`,根节点 `root` 和已使用的中转航班集合 `usedStopFlight`。方法通过遍历 `stopFlight` 列表来构建树。
首先,通过索引从1开始遍历 `stopFlight` 列表。对于每个索引 `i`,创建一个临时节点 `temp`,并将乘客信息传递给 `passengerInfoMapper.getPassengerInfo` 方法来获取乘客信息。
然后,检查临时节点的到达机场三字码是否与根节点的出发机场三字码相同,并且临时节点的出发时间是否在根节点的预计到达时间之后。如果满足这些条件,将临时节点添加为根节点的子节点,并将其添加到根节点的节点列表中,同时将临时节点的航班号添加到已使用的中转航班集合中。
如果不满足条件,则将临时节点添加为根节点的子节点,并递归调用 `addChild` 方法来添加子节点的子节点。
最后,返回根节点。
请注意,这段代码中使用了一些未定义的方法和类,例如 `ShortAndLowFlyTradeNode`、`FlightDateAndAirport` 和 `PassengerParam`。你可能需要提供这些定义才能更好地理解代码。
阅读全文