Java 如何迭代不同对象的阵列列表
在Java 如何迭代不同对象的阵列列表,java,collections,Java,Collections,在ArrayList中,我有两个不同的对象, 学生和员工。我想一个接一个地重复一遍。我能够遍历列表并使用Employee对象,但不能使用Student对象 我有以下代码: package javaCollections; import java.util.ArrayList; import java.util.Iterator; class Employee { @Override public String toString() { return "emp
ArrayList
中,我有两个不同的对象,
学生
和员工。我想一个接一个地重复一遍。我能够遍历列表并使用Employee
对象,但不能使用Student
对象
我有以下代码:
package javaCollections;
import java.util.ArrayList;
import java.util.Iterator;
class Employee {
@Override
public String toString() {
return "employee [name=" + name + ", age=" + age + "]";
}
public String name;
public int age;
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;
}
Employee(String name, int age) {
this.age = age;
this.name = name;
}
}
class Student {
@Override
public String toString() {
return "student [stud_name=" + stud_name + ", rollNumber=" + rollNumber
+ "]";
}
String stud_name;
int rollNumber;
public Student(String stud_name, int rollNumber) {
super();
this.stud_name = stud_name;
this.rollNumber = rollNumber;
}
public String getStud_name() {
return stud_name;
}
public void setStud_name(String stud_name) {
this.stud_name = stud_name;
}
public int getRollNumber() {
return rollNumber;
}
public void setRollNumber(int rollNumber) {
this.rollNumber = rollNumber;
}
}
public class Arraylist {
ArrayList<Object> emparray;
public void addemp() {
Employee emp = new Employee("abc", 12);
emparray = new ArrayList<Object>();
emparray.add(emp);
Employee emp1 = new Employee("def", 12);
emparray.add(emp1);
Student std = new Student("efg", 123);
Student std1 = new Student("xyz", 123);
emparray.add(std);
emparray.add(std1);
}
public void iterateemp() {
/*
* Iterator<Object> itr=emparray.iterator();
*
* while(itr.hasNext()) { System.out.println(itr.next()); }
*/
for (Object e : emparray) {
System.out.println(((Employee) e).getAge());
System.out.println(((Employee) e).getName());
}
}
public static void main(String[] args) {
Arraylist al = new arraylist();
al.addemp();
al.iterateemp();
}
}
packagejavacollections;
导入java.util.ArrayList;
导入java.util.Iterator;
班级员工{
@凌驾
公共字符串toString(){
返回“employee[name=“+name+”,age=“+age+”]”;
}
公共字符串名称;
公共信息;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共整数getAge(){
回归年龄;
}
公共无效设置(整数){
这个。年龄=年龄;
}
Employee(字符串名称,整数年龄){
这个。年龄=年龄;
this.name=名称;
}
}
班级学生{
@凌驾
公共字符串toString(){
返回“student[stud_name=“+stud_name+”,rollNumber=“+rollNumber
+ "]";
}
字符串名称;
整数;
公立学生(字符串螺柱名称,整数编号){
超级();
this.stud\u name=stud\u name;
this.rollNumber=rollNumber;
}
公共字符串getStud_name(){
返回螺柱名称;
}
公共无效设置stud_名称(字符串stud_名称){
this.stud\u name=stud\u name;
}
public int getRollNumber(){
返回卷号;
}
public void setRollNumber(int rollNumber){
this.rollNumber=rollNumber;
}
}
公共类数组列表{
数组列表;
公共无效增编(){
员工emp=新员工(“abc”,12);
emparray=newArrayList();
emprarray.add(emp);
员工emp1=新员工(“def”,12);
emprarray.add(emp1);
学生标准=新生(“efg”,123);
学生std1=新学生(“xyz”,123);
emparray.add(std);
添加(std1);
}
public void iterateemp(){
/*
*迭代器itr=emparray.Iterator();
*
*while(itr.hasNext()){System.out.println(itr.next());}
*/
用于(对象e:emparray){
System.out.println(((Employee)e.getAge());
System.out.println(((Employee)e.getName());
}
}
公共静态void main(字符串[]args){
Arraylist al=新的Arraylist();
加法();
al.iterateemp();
}
}
有人能帮我吗?你需要做的是检查对象的实例
for (Object e : emparray) {
if(e instanceof employee) {
System.out.println(((employee) e).getAge());
System.out.println(((employee) e).getName());
} else if(e instanceof student) {
// do something else
}
}
}
在我看来,这是一个糟糕的设计。您需要做的是检查对象的实例
for (Object e : emparray) {
if(e instanceof employee) {
System.out.println(((employee) e).getAge());
System.out.println(((employee) e).getName());
} else if(e instanceof student) {
// do something else
}
}
}
for (Object e : emparray) {
if(e instanceof employee) {
System.out.println(((employee) e).getAge());
System.out.println(((employee) e).getName());
} else if(e instanceof student) {
System.out.println(((student) e).getRollNumber());
System.out.println(((student) e).getStud_name());
}
}
}
在我看来,这是一个糟糕的设计。最佳做法是创建名为
Person
的公共基,该基具有共享字段,如name
。然后您可以将循环中的对象
替换为人
for (Object e : emparray) {
if(e instanceof employee) {
System.out.println(((employee) e).getAge());
System.out.println(((employee) e).getName());
} else if(e instanceof student) {
System.out.println(((student) e).getRollNumber());
System.out.println(((student) e).getStud_name());
}
}
}
import java.util.ArrayList;
import java.util.Iterator;
interface Person{
public String getName();
public void setName(String name);
}
class employee implements Person{
@Override
public String toString() {
return "employee [name=" + name + ", age=" + age + "]";
}
public String name;
public int age;
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;
}
employee(String name, int age) {
this.age = age;
this.name = name;
}
}
class student implements Person{
@Override
public String toString() {
return "student [stud_name=" + name + ", rollNumber=" + rollNumber
+ "]";
}
String name;
int rollNumber;
public student(String stud_name, int rollNumber) {
super();
this.name = stud_name;
this.rollNumber = rollNumber;
}
public int getRollNumber() {
return rollNumber;
}
public void setRollNumber(int rollNumber) {
this.rollNumber = rollNumber;
}
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name=name;
}
}
public class arraylist {
ArrayList<Person> emparray;
public void addemp() {
employee emp = new employee("abc", 12);
emparray = new ArrayList<Person>();
emparray.add(emp);
employee emp1 = new employee("def", 12);
emparray.add(emp1);
student std = new student("efg", 123);
student std1 = new student("xyz", 123);
emparray.add(std);
emparray.add(std1);
}
public void iterateemp() {
for (Person e : emparray) {
if (e instanceof employee) {
System.out.println(((employee) e).getAge());
}else{
/// do for student
}
System.out.println(e.getName());
}
}
public static void main(String[] args) {
arraylist al = new arraylist();
al.addemp();
al.iterateemp();
}
}
import java.util.ArrayList;
导入java.util.Iterator;
接口人{
公共字符串getName();
public void setName(字符串名称);
}
类employee实现Person{
@凌驾
公共字符串toString(){
返回“employee[name=“+name+”,age=“+age+”]”;
}
公共字符串名称;
公共信息;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共整数getAge(){
回归年龄;
}
公共无效设置(整数){
这个。年龄=年龄;
}
employee(字符串名称,整数年龄){
这个。年龄=年龄;
this.name=名称;
}
}
班上学生实行人{
@凌驾
公共字符串toString(){
return“student[stud_name=“+name+”,rollNumber=“+rollNumber
+ "]";
}
字符串名;
整数;
公立学生(字符串螺柱名称,整数编号){
超级();
this.name=螺柱名称;
this.rollNumber=rollNumber;
}
public int getRollNumber(){
返回卷号;
}
public void setRollNumber(int rollNumber){
this.rollNumber=rollNumber;
}
@凌驾
公共字符串getName(){
返回名称;
}
@凌驾
公共void集合名(字符串名){
this.name=name;
}
}
公共类数组列表{
数组列表;
公共无效增编(){
员工emp=新员工(“abc”,12);
emparray=newArrayList();
emprarray.add(emp);
员工emp1=新员工(“def”,12);
emprarray.add(emp1);
学生标准=新生(“efg”,123);
学生std1=新学生(“xyz”,123);
emparray.add(std);
添加(std1);
}
public void iterateemp(){
for(人员e:EMPARY){
if(员工的e实例){
System.out.println(((employee)e.getAge());
}否则{
///为学生做什么
}
System.out.println(e.getName());
}
}
公共静态void main(字符串[]args){
arraylist al=新的arraylist();
加法();
al.iterateemp();
}
}
最佳做法是创建名为Person
的公共基,该基具有共享字段,如name
。然后您可以将循环中的对象
替换为人
import java.util.ArrayList;
import java.util.Iterator;
interface Person{
public String getName();
public void setName(String name);
}
class employee implements Person{
@Override
public String toString() {
return "employee [name=" + name + ", age=" + age + "]";
}
public String name;
public int age;
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;
}
employee(String name, int age) {
this.age = age;
this.name = name;
}
}
class student implements Person{
@Override
public String toString() {
return "student [stud_name=" + name + ", rollNumber=" + rollNumber
+ "]";
}
String name;
int rollNumber;
public student(String stud_name, int rollNumber) {
super();
this.name = stud_name;
this.rollNumber = rollNumber;
}
public int getRollNumber() {
return rollNumber;
}
public void setRollNumber(int rollNumber) {
this.rollNumber = rollNumber;
}
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name=name;
}
}
public class arraylist {
ArrayList<Person> emparray;
public void addemp() {
employee emp = new employee("abc", 12);
emparray = new ArrayList<Person>();
emparray.add(emp);
employee emp1 = new employee("def", 12);
emparray.add(emp1);
student std = new student("efg", 123);
student std1 = new student("xyz", 123);
emparray.add(std);
emparray.add(std1);
}
public void iterateemp() {
for (Person e : emparray) {
if (e instanceof employee) {
System.out.println(((employee) e).getAge());
}else{
/// do for student
}
System.out.println(e.getName());
}
}
public static void main(String[] args) {
arraylist al = new arraylist();
al.addemp();
al.iterateemp();
}
}
import java.util.ArrayList;
导入java.util.Iterator;
接口人{
公共字符串getName();
public void setName(字符串名称);
}
类employee实现Person{
@凌驾
公共字符串toString(){
返回“employee[name=“+name+”,age=“+age+”]”;
}
公共字符串名称;
公共信息;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共整数getAge(){
回归年龄;
}
公共无效设置(整数){
这