按顺序(字母顺序)执行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每个元素,检查每个目标值的第一个字符,并进行相应的排序,但听起来比它复杂得多