【问题标题】:java : Parsing An ArrayList and setting them into a Objectjava : 解析一个 ArrayList 并将它们设置为一个对象
【发布时间】:2012-03-22 15:49:33
【问题描述】:

我有这两个类:

class Student
{
String name;
String age ;
}

class Person
{

String name;
String age ;
String grade ;
}

在下面的代码中,我创建了Student 对象并将它们设置在ArrayList 中。在ArrayList 中设置数据后,我需要解析ArrayList 并在另一个对象中设置值:

public class Work {

    public static void main(String args[]) {

        List StudentItems = new ArrayList();

        Student stud1 = new Student();
        Student stud2 = new Student();

        stud1.name = "ABC";
        stud1.age = "28";
        stud2.name = "XYZ";
        stud2.age = "38";

        StudentItems.add(stud1);
        StudentItems.add(stud2);

        Person[] pers = new Person[StudentItems.size()];

        for (int i = 0; i < StudentItems.size(); i++) {
            pers[i] = new Person();

// I am confused here , could anyone please help 

        }

    }
}

【问题讨论】:

  • 这里的 Person 类是什么,你想用它做什么??
  • 为什么 Person 有成绩,而 Student 没有?你不是把它弄混了吗?为什么 Student 不扩展 Person?

标签: java


【解决方案1】:

鉴于您的课程布局确实正确(请参阅我的评论),您可以为 person 编写一个构造函数,将 Student 作为输入:

        pers[i] = new Person (StudentItems[i]);

注意,我会重命名变量:

        persons [i] = new Person (students[i]);

您与新 CTor 的人员将如下所示:

class Person
{
  String name;
  String age ;
  String grade ;

  public Person () {}
  public Person (s Student) {
    name = s.name;
    age = s.age;
  }
}

更可能的是,您想更改 Student 和 Person 的名称,并从 Person 派生 Student。然后,每个学生都是一个人,在你的循环中,它就是:

        persons [i] = students[i];

【讨论】:

    【解决方案2】:

    试试看。这将完成工作

    你的 Person 类应该是这样的:

    package com.student.person.work;
    
    /**
     *
     * @author sarath_sivan
     */
    public class Person {
    
        private String name;
        private int age;
        private String grade;
    
        public String getName() {
           return this.name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return this.age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getGrade() {
            return this.grade;
        }
    
        public void setGrade(String grade) {
            this.grade = grade;
        }
    
    }
    

    你的学生类应该是这样的:

    package com.student.person.work;
    
    /**
     *
     * @author sarath_sivan
     */
    public class Student {
    
        private String name;
        private int age;
    
        public String getName() {
           return this.name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return this.age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
    }
    

    最后是 Work 类:

    package com.student.person.work;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     *
     * @author sarath_sivan
     */
    public class Work {
    
        public static String calculateGrade() {
            String grade = "";
            // Your code to find the grade.
            //............
            return grade;
        }
    
        public static void doWork() {
            List<Student> studentList = new ArrayList<Student>();
    
            Student student = new Student();
            student.setName("ABC");
            student.setAge(24);
            studentList.add(student);
    
            student = new Student();
            student.setName("DEF");
            student.setAge(28);
            studentList.add(student);
    
            student = new Student();
            student.setName("GHI");
            student.setAge(21);
            studentList.add(student);
    
            List<Person> personList = new ArrayList<Person>();
    
            for(Student students : studentList) {
                Person person = new Person();
                person.setName(students.getName());
                person.setAge(students.getAge());
                person.setGrade(Work.calculateGrade());// Setting the grade
            }
        }
    
        public static void main(String[] args) {
            Work.doWork();
        }
    
    }
    

    希望这会有所帮助。

    谢谢!

    【讨论】:

      【解决方案3】:

      Grade 应该在 Student 类中。如果你这样做,你的类应该是这样的:

      class Person {
      private String name; 
      private int age; 
      
      //getters and setters
      }
      
      class Student extends Person { // here you have name and age from Person
      private String grade;
      
      //getters and setters
      }
      

      现在,您想要学生列表中的人员列表吗?你可以这样做:

      for (int i = 0; i < listOfStudents.size(); i++){
      arrayOfPersons[i] = (Person)listOfStudents.get(i);
      }
      

      【讨论】:

        【解决方案4】:

        类似这样的:

            List<Student> studentItems = new ArrayList<Student>();
            Student stud1 = new Student();
            Student stud2 = new Student();
        
            stud1.name = "ABC";
            stud1.age = "28";
            stud2.name = "XYZ";
            stud2.age = "38";
        
            studentItems.add(stud1);
            studentItems.add(stud2);
        
            for (int i = 0; i < studentItems.size(); i++) {
                Student student = studentItems.get(i);
                Person person = new Person();
                person.name = student.name;
                person.age = student.age;
                // person.grade = something - set grade here
                pers[i] = person;
            }
        

        但请注意,您不应该使用公共字段......所以它应该看起来像这样:

        for (int i = 0; i < studentItems.size(); i++) {
            Student student = studentItems.get(i);
            Person person = new Person();
            person.setName(student.getName());
            person.setAge(student.getAge());
            // person.setGrade(computeGradeSomehow()); - set grade here
            persons[i] = person;
        }
        

        【讨论】:

          【解决方案5】:

          如果您经常从学生对象转换为个人对象,请添加以下构造函数和 setter/getter 方法

          class Person {
          
                  String name;
          
                  String age;
          
                  String grade;
          
                  public Person() {
          
                  }
          
                  Person(Student student) {
                      this.name = student.getName();
                      this.age = student.getAge();
                  }
          
                  public String getGrade() {
                      return grade;
                  }
          
                  public void setGrade(String grade) {
                      this.grade = grade;
                  }
              }
          
              class Student {
                  private String name;
          
                  private String age;
          
                  public void setName(String name) {
                      this.name = name;
                  }
          
                  public String getName() {
                      return name;
                  }
          
                  public String getAge() {
                      return age;
                  }
          
                  public void setAge(String age) {
                      this.age = age;
                  }
              }
          

          在 Work 类中,创建 Person 对象,

          List<Student> studentItems = new ArrayList<Student>();
           List<Person> personItems = new ArrayList<Person>();
          
          for (int i = 0; i < studentItems.size(); i++) {
                  Student student = studentItems.get(i);
                  Person person = new Person(student);
                  person.setGrade(your_formula_for grade);  
                  personItems.add(person); 
          }
          

          【讨论】:

            【解决方案6】:

            你可以这样做:

            pers[i].name = StudentItems.get(i).name;
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-09-13
              • 2021-07-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多