比较从发布我原来的,发现了一个问题,修订处Sorting Arrays Using Variables Within the Array 基本上,我似乎无法找到基于我Event
类的eventCodeString
排序我的阵列的方法。由于字符串是字母数字(例如A123,B321,C222),传统比较器(我刚发现,感谢原始帖子中的人员)不起作用。我遇到并尝试实施的解决方案越多,我就越困惑。请帮助我理解涉及字符串的数组对象比较的逻辑。字母数字串从对象数组
package Chapter9;
import Chapter9.Event;
import javax.swing.JOptionPane;
import java.util.*;
public class EventDemo
{
public static void main(String[] args)
{
callMotto();
int x, sortMethod;
Event[] eventStuff = new Event[8];
for(x = 0; x < 8; ++x)
{
eventStuff[x] = new Event();
eventStuff[x].setEventCodeString();
eventStuff[x].setGuests();
eventStuff[x].setContactNumber();
eventStuff[x].setEventStr();
}
//Sorting method start
do
{
String sorting;
sorting = JOptionPane.showInputDialog("Please choose sorting method:\n"
+ "1 to sort by event number\n"
+ "2 to sort by number of guests\n"
+ "3 to sort by event type\n"
+ "Type 99 to exit sorting list");
sortMethod = Integer.parseInt(sorting);
//Event code sorting start
if(sortMethod == 1)
{
for(x = 0; x < 8; ++x)
{
}
}
//Event code sorting end
if(sortMethod == 2)
{
for(x = 0; x < 8; ++x)
{
Arrays.sort(eventStuff, new Comparator<Event>()
{
@Override
public int compare(Event o1, Event o2)
{
if (o1.getGuests() < o2.getGuests())
return -1;
else if (o1.getGuests() == o2.getGuests())
return 0;
else
return 1;
}
});
eventStuff[x].largeParty();
}
}
//Event type sorting start
if(sortMethod == 3)
{
for(x = 0; x < 8; ++x)
{
Arrays.sort(eventStuff, new Comparator<Event>()
{
@Override
public int compare(Event o1, Event o2)
{
if (o1.getEventStr() < o2.getEventStr())
return -1;
else if (o1.getEventStr() == o2.getEventStr())
return 0;
else
return 1;
}
});
eventStuff[x].largeParty();
}
//Event type sorting end
//Sorting method end
}
if(sortMethod == 99)
System.exit(0);
}
while(sortMethod != 99);
}
public static void callMotto()
{
JOptionPane.showMessageDialog(null, "*******************************************************\n"
+ "* Carly's Makes The Food That Makes The Party! *\n"
+ "*******************************************************");
}
}
什么你想要什么样的排序,简单的字符值排序,还是你想要的,例如“X-123”在“X-13”之后排序? –
我需要数组排序如下:假设用户输入一些任意值,比如B111,A222,C333,C222,E555和E111,我希望输出为A222,B111,C222,C333,E111,E555。 –
这只是普通的字母数字排序,有什么难度?你只需要明白,只有“基元”可以与'><=='进行比较,而对于需要使用特定于对象的'比较'方法的对象。 'String'有这样一种方法,名为'compareTo',或者如果你愿意,你可以使用'compareToIgnoreCase'。 –