员工类:
public class Employee {
int empid;
String name;
int age;
public Employee(int empid,String name,int age)
{
this.empid=empid;
this.name=name;
this.age=age;
}
public int getEmpid() {
return empid;
}
public void setEmpid(int empid) {
this.empid = empid;
}
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;
}
}
Run Code Online (Sandbox Code Playgroud)
比较类:
public class Employee_comparator implements Comparator<Employee> {
@Override
public int compare(Employee object1, Employee object2) {
return object1.getname().compareTo(object2.getname());
}
}
Run Code Online (Sandbox Code Playgroud)
主要课程:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class Employee_Main {
/**
* @param args
*/
public static void main(String[] args) {
List<Employee> list=new ArrayList<Employee>();
list.add(new Employee(33186,"varun",23));
list.add(new Employee(33187,"deepak",23));
list.add(new Employee(33188,"apple",23));
list.add(new Employee(33189,"rohan",23));
Collections.sort(list,new Employee_comparator());
for(int i=0;i<list.size();i++) {
System.out.print("age:"+list.get(i).getAge());
System.out.print("empid:"+list.get(i).getEmpid());
System.out.println("name:"+list.get(i).getname());
}
Iterator<Employee> itr=list.iterator();
while(itr.hasNext())
{
System.out.println(itr.next());
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用get方法进行打印时,它工作正常.但是,当我尝试使用列表打印元素时Iterator,它会给出以下输出:
new_.Employee@28122812new_.Employee@280d280dnew_.Employee@28172817new_.Employee@28082808
Run Code Online (Sandbox Code Playgroud)
您可以toString()在类中实现一个方法Employee:
public String toString(){
String foo = "name: "+ this.name + ". Age:" + this.age + ". Id:" + empId; //example
return foo;
Run Code Online (Sandbox Code Playgroud)
这样,当你这样做时:
System.out.println(itr.next());
它将打印员工的姓名,年龄和身份证明
因为它返回了您所拥有的itr.next()类的对象。Employee尝试
Iterator<Employee> itr=list.iterator();
while(itr.hasNext())
{
Employee employee = itr.next();
System.out.print("age:"+employee.getAge());
System.out.print("empid:"+employee.getEmpid());
System.out.println("name:"+employee.getname());
}
Run Code Online (Sandbox Code Playgroud)
您正在打印 Employee 类对象而不是它的值,
尝试 :
Iterator<Employee> itr=list.iterator();
while(itr.hasNext())
{
//System.out.println(itr.next());
System.out.println(itr.next().getEmpid());
}
Run Code Online (Sandbox Code Playgroud)
之间,使用增强的for循环,它比迭代器更快。
编辑:
增强的 for 循环比 Iterator 更具可读性。而 Iterator 为您提供了使用 iterator.remove() 方法删除值的选项。如果您尝试在循环期间更新列表,for 循环会抛出 ConcurrentModificationException。
| 归档时间: |
|
| 查看次数: |
34798 次 |
| 最近记录: |