在不循环

时间:2017-11-06 09:32:20

标签: java oop

我想在没有循环的情况下为对象添加值,因为如果有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);  
    }  
 }
}

1 个答案:

答案 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());  
  }  
}