按顺序(字母顺序)执行java对象数组中的外接程序

按顺序(字母顺序)执行java对象数组中的外接程序,java,arrays,sorting,Java,Arrays,Sorting,我有一段代码,在它下面,只是将新元素添加到末尾,但我希望能够按照目的地名称的字母顺序添加每个新元素。不确定是否必须在添加后对列表进行排序,或者通过先检查然后添加来插入新对象。不管是哪种情况,我都不知道该怎么做 public void add() { int newRating =-1; in = new Scanner(System.in); if((lastElement+1) < MAX_ELEMENT) //MAX_ELE

我有一段代码,在它下面,只是将新元素添加到末尾,但我希望能够按照目的地名称的字母顺序添加每个新元素。不确定是否必须在添加后对列表进行排序,或者通过先检查然后添加来插入新对象。不管是哪种情况,我都不知道该怎么做

public void add()
    {
        int newRating =-1;
        in = new Scanner(System.in);
        if((lastElement+1) < MAX_ELEMENT)    //MAX_ELEMENT =100
        {
            System.out.print("Enter the Name: ");
            newDestination = in.nextLine();

            System.out.print("Enter the type of Vacation(Single character code: ");
            validCharacterCode();

            while(newRating < MIN_RATING || newRating > MAX_RATING)
            {
                System.out.print("Enter the Rating(1-5): ");
                newRating = in.nextInt();
            }
            lastElement++;
            aDestination[lastElement] = new Destination(newDestination,newVacationType,newRating);

       }
       else
       {
            System.out.print("Cannot add new elements: ");
            System.out.println("List already has " + MAX_ELEMENT + " elements.");
       } 
   }
public void add()
{
int newRating=-1;
in=新扫描仪(System.in);
如果((lastElement+1)最高评级)
{
系统输出打印(“输入评级(1-5):”;
newRating=in.nextInt();
}
lastElement++;
a目的地[lastElement]=新目的地(newDestination、newVacationType、newRating);
}
其他的
{
System.out.print(“无法添加新元素:”);
System.out.println(“列表已经有”+MAX_元素+“元素”);
} 
}

如果您决定使用
数组.sort
,则应遵循以下原则(包括使用lambda表达式的比较器函数示例):

public void add()
{
字符串newDestination;
int newRating=-1;
in=新扫描仪(System.in);
如果((lastElement+1)最高评级)
{
系统输出打印(“输入评级(1-5):”;
newRating=in.nextInt();
}
lastElement++;
a目的地[lastElement]=新目的地(newDestination、newVacationType、newRating);
排序(指定,0,lastElement,(o1,o2)->o1.destination.compareTo(o2.destination));
}
其他的
{
System.out.print(“无法添加新元素:”);
System.out.println(“列表已经有”+MAX_元素+“元素”);
} 
}

如果您决定使用
数组.sort
,则应遵循以下原则(包括使用lambda表达式的比较器函数示例):

public void add()
{
字符串newDestination;
int newRating=-1;
in=新扫描仪(System.in);
如果((lastElement+1)最高评级)
{
系统输出打印(“输入评级(1-5):”;
newRating=in.nextInt();
}
lastElement++;
a目的地[lastElement]=新目的地(newDestination、newVacationType、newRating);
排序(指定,0,lastElement,(o1,o2)->o1.destination.compareTo(o2.destination));
}
其他的
{
System.out.print(“无法添加新元素:”);
System.out.println(“列表已经有”+MAX_元素+“元素”);
} 
}

按特定顺序添加对象集合,这就是创建的目的。它保证队列中的顺序。如果需要在末尾使用数组,则始终可以将其转换回

使用
PriorityQueue
而不是
Destination[]

Comparator<Destination> byName = new Comparator<>(
{
    @Override
    public int compare(Destination d1, Destination d2)
    {
        return d1.getName().compareTo(d2.getName());
    }
});
int initialCapacity = 10;
PriorityQueue<Destination> destinationsByName = new PriorityQueue<>(initialCapacity, byName);
如果您再次需要阵列,该怎么办?没问题,您可以使用以下方法将其转换回:

destinationsByName.toArray(new Destination[0]);

按特定顺序添加对象集合,这就是创建的目的。它保证队列中的顺序。如果需要在末尾使用数组,则始终可以将其转换回

使用
PriorityQueue
而不是
Destination[]

Comparator<Destination> byName = new Comparator<>(
{
    @Override
    public int compare(Destination d1, Destination d2)
    {
        return d1.getName().compareTo(d2.getName());
    }
});
int initialCapacity = 10;
PriorityQueue<Destination> destinationsByName = new PriorityQueue<>(initialCapacity, byName);
如果您再次需要阵列,该怎么办?没问题,您可以使用以下方法将其转换回:

destinationsByName.toArray(new Destination[0]);

如果您选择插入元素,然后对结果数组进行排序,我建议使用插入排序,当列表已接近排序时,插入排序具有良好的性能(这就是您的列表)。如果你不想自己实现排序,你可以查看数组。排序,但你必须实现一个比较器。。谢谢,我想自己实现排序,插入排序听起来像我要做的。但是我不确定如何去做。我只是一个初学者,我想通过e每个元素并检查每个目标值的第一个字符并相应地排序,但这听起来比需要的复杂多了。我想你可以在Wikipedia上查找插入排序。这篇文章有很好的伪代码说明它是如何工作的。如果你选择插入元素,然后对结果数组排序,我建议插入排序,当列表已接近排序时,它具有良好的性能(这就是您的列表)。如果你不想自己实现排序,你可以查看数组。排序,但你必须实现一个比较器。。谢谢,我想自己实现排序,插入排序听起来像我要做的。但是我不确定如何去做。我只是一个初学者,我想通过e每个元素,检查每个目标值的第一个字符,并进行相应的排序,但听起来比它复杂得多