get/set:遍历数组查找equals的对象并返回index
时间: 2024-01-10 20:02:18 浏览: 34
以下是一个示例的 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,并输出修改后的列表。
定义User类, 属性为姓名 name(Sting 类型)年龄 age(int 类型)性别 sex(String 类型)私有属性, 生成空参有参构造,set/get方法 定义测试类Test,完成以下要求: ① 定义方法,public static ArrayList getUser(ArrayList users), 获得年龄大于等于18岁,并且性别为 "女"的User,加入新的集合并返回。 ② 在main方法中完成以下功能:创建5个User对象并赋值(对象属性值,自己给定),加入ArrayList集合中, 调用getUser方法并接收,遍历返回的新集合输出新集合中所有元素信息
解题思路:
1. 定义User类,包括属性name(String类型)、age(int类型)、sex(String类型)和空参有参构造方法,以及set/get方法;
2. 定义Test类,实现public static ArrayList getUser(ArrayList users)方法,返回年龄大于等于18岁且性别为“女”的User对象集合;
3. 在main方法中,创建5个User对象并分别设置对象属性值,加入ArrayList集合中;调用Test类中的getUser方法,并接受返回的User对象集合;遍历新集合中所有元素信息,输出每个User对象属性信息。
代码实现:
1. User类定义
```
public class User {
private String name;
private int age;
private String sex;
public User() {
}
public User(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
```
2. 测试类Test定义
```
import java.util.ArrayList;
public class Test {
public static ArrayList getUser(ArrayList<User> users) {
ArrayList<User> newUserList = new ArrayList<>();
for (User user : users) {
if (user.getAge() >= 18 && user.getSex().equals("女")) {
newUserList.add(user);
}
}
return newUserList;
}
public static void main(String[] args) {
ArrayList<User> userList = new ArrayList<>();
User u1 = new User("张三", 22, "男");
User u2 = new User("李四", 16, "女");
User u3 = new User("王五", 20, "女");
User u4 = new User("赵六", 18, "女");
User u5 = new User("钱七", 25, "男");
userList.add(u1);
userList.add(u2);
userList.add(u3);
userList.add(u4);
userList.add(u5);
ArrayList<User> newUserList = getUser(userList);
System.out.println("新集合中的元素信息为:");
for (User user : newUserList) {
System.out.println("姓名:" + user.getName() + " 年龄:" + user.getAge() + " 性别:" + user.getSex());
}
}
}
```
代码说明:
① getUser方法利用for循环遍历传入的users集合,对符合条件的User对象添加到新的集合newUserList中,并返回集合newUserList。
② 在main方法中,创建5个User对象u1、u2、u3、u4、u5并设置属性值,并添加到userList集合中。调用Test类中的getUser方法接受返回的新集合newUserList,并利用for循环遍历newUserList集合,输出每个User对象的姓名、年龄和性别。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)