从文件中排序对象

时间:2017-07-08 20:47:30

标签: java arrays sorting object

(在发布时,我无法访问代码,稍后会添加)

我有一组Employee对象,它们包含名称,可用性和首选小时数。我根据员工的姓名按字母顺序对对象进行排序。

当程序启动时,它会检查文件,如果它们是空的,它会询问您有多少员工,然后继续填写数据。并且它正确分类A-Z。

当我尝试添加新员工时,在调整数组大小后,即使排序完成,它也会将其添加到最后。

所以它在第一次排序,但在重新运行程序后不再排序。我回家后会发布代码,但想知道是否有人在同一时间有任何答案。谢谢

static void employeeSort(Employee[] emply, int size)
{
    int i;
    Employee temp;

    boolean flag = true;

        while(flag)
        {   
            flag = false;
            for(i = 0; i < size; i++)
            {

                if (emply[i].getName().compareTo(emply[i+1].getName())>0)
                   {
                       System.out.println(emply[i].getName());
                       temp = emply[i];
                       emply[i] = emply[i+1];
                       emply[i+1] = temp;
                       flag = true;
                   }

            }   
        }

}

在第一次运行时,它会正确排序所有内容,但是一旦从文件中读取数组,程序就会在排序中终止。我尝试实现优先级队列,但我需要使类可比,并且它已经实现了Serializable。

public class Employee implements Serializable
{
int     prefHours;
String  name;
String  avail;

Employee( String nam, int hours, String aval )
{
    name = nam;
    prefHours = hours;
    avail = aval;
}

void prnEmpl()
{
    System.out.print("Name: " + name);
    System.out.println();
    System.out.print("Prefered hours: " + prefHours);
    System.out.println(); 
    System.out.print("Availability: " + avail);
    System.out.println();
}

String getName()
{
    return name;
}

String getAvail()
{
    return avail;
}

}

1 个答案:

答案 0 :(得分:1)

没有你的代码,很难弄清问题是什么。据我了解,我认为您应该使用java.util.PriorityQueue代替Array