如何解决对象 Arraylist 元素正在更改 - Java
刚开始学习java和OOP。我尝试创建一个对象“person”的数组列表,用于存储他们的姓名、年龄和工作以便于访问。出于某种原因,在我将对象添加到数组列表中的其他索引后,同一索引处的对象会发生变化。为什么会出现这个问题,我该如何解决?
这是我的 person 对象、person_array 和我的 IO_Driver 的代码
// OBJECT PERSON
package DEMOPK;
public class person {
public String name;
public int age;
public String job;
public person(String name,int age,String job) {
this.name = name;
this.age = age;
this.job = job;
}
}
// person_array
package DEMOPK;
import java.util.ArrayList;
public class person_array {
public static int len;
static ArrayList<person> data = new ArrayList<person>();
//PROBLEM HERE
public person_array(int a) {
len = a;
data.ensureCapacity(len);
person p = new person("empty","empty");
for (int i = 0; i < len; i++) {
data.add(p);
}
}
public int get_len() {
return len;
}
public static int hash(String name) {
int ascii_sum = 0;
for (int i = 0; i < name.length(); i++) {
ascii_sum += name.charat(i);
//System.out.println(name.charat(i));
}
//System.out.println(len);
int index = ascii_sum % len;
System.out.println("Hash index: "+ index);
return index;
}
public void add_person(String name,String job) {
person p = new person(name,age,job);
int index = hash(name);
data.add(index,p);
}
public person get_person(String name) {
return data.get(hash(name));
}
}
// I/O Driver
import java.util.Scanner;
import DEMOPK.person_array;
import DEMOPK.person;
public class test_person {
public static void main(String[] args) {
System.out.println("What size do you want your database of people to be?");
Scanner scanner = new Scanner(system.in);
int arr_len = scanner.nextInt();
person_array data = new person_array(arr_len * 10);
System.out.println(data.get_len());
System.out.println("type help for a list of commands\n");
while (true) {
System.out.println("What is your next command?\n");
String command = scanner.next();
if (command.compareto("help") == 0) {
System.out.println("help - displays a list of commands\n");
System.out.println("add - adds a person to the collection\n");
System.out.println("person - shows information of that person\n");
System.out.println("quit - quits the program\n");
} else if (command.compareto("add") == 0) {
System.out.println("Name: ");
String name = scanner.next();
System.out.println("Age: ");
int age = scanner.nextInt();
System.out.println("Job: ");
String job = scanner.next();
data.add_person(name,job);
System.out.println(name + " has been successfully added to the collection\n");
} else if (command.compareto("person") == 0) {
System.out.println("What is the name of the person you want info about? ");
String name = scanner.next();
System.out.println("\n");
person p = data.get_person(name);
System.out.println("Name: " + p.name);
System.out.println("Age: " + p.age);
System.out.println("Job: "+ p.job);
} else if (command.compareto("quit") == 0) {
System.out.println("quitting program...");
break;
} else {
System.out.println("Invalid command please type help for a list of commands\n");
System.out.println("================================\n");
continue;
}
System.out.println("================================\n");
}
scanner.close();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。