我想在没有循环的情况下为对象添加值,因为如果有1000个对象,那么我不想循环所有这些对象。我想根据名称随机地向学生添加年龄。 student.Is有任何方法可以添加值
这是代码
import java.util.*;
import java.io.*;
class Student{
Student(String Name){
this.Name=Name;
}
String Name;
int age;
}
public class HelloWorld{
public static void main(String []args){
String a []={"Ram","Krishna","Sam","Tom"};
ArrayList<Student> al = new ArrayList<Student>();
for(int i=0;i<a.length;i++){
Student c;
c=new Student(a[i]);
al.add(c);
}
for(Student obj:al){
if(obj.Name.equals("Krishna")){
obj.age=24;
}
System.out.println("Name = "+ obj.Name + " Age = " + obj.age);
}
}
}
答案 0 :(得分:0)
首先是一些小问题:
您不应该直接使用这些字段,而是创建getter和setter。这些字段应该是私有的。变量名称应按惯例以小写字母开头。所以这将是调整后的学生班级:
public class Student {
private String name;
private int age;
public Student(String name) {
this.name = name;
}
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;
}
}
要存储Student
个对象,您可以使用名称为键的地图和Student
个实例作为值。
优良作法是仅使用接口类型Map
声明变量,而不是使用具体实现HashMap
声明变量。哈希映射具有按键搜索的O(1)复杂度。因此,您不需要循环来遍历所有Student
个实例。 (HashMap.get()
实现内部没有使用循环。)
public static void main(String[] args) {
String a [] = {"Ram", "Krishna", "Sam", "Tom"};
// Keys: student names
Map<String, Student> al = new HashMap<String, Student>();
// Fill the Student's map
for(int i = 0; i < a.length; i++){
String name = a[i];
al.put(name, new Student(name));
}
// Manipulate one student by name. If there is no entry for that name we get null.
// So we better check for null before using it.
Student student = al.get("Krishna");
if(student != null) {
student.setAge(24);
}
// Output the all students
for(Student obj: al.values()){
System.out.println("Name = "+ obj.getName() + " Age = " + obj.getAge());
}
}