gpt4 book ai didi

java - Android排序数组

转载 作者:行者123 更新时间:2023-12-02 00:24:34 25 4
gpt4 key购买 nike

我在对数组进行排序时遇到一些问题,我希望按天对数组进行排序,可以是星期一、星期二、星期三、星期四或星期五。我有一个显示数组中所有内容的类,但我想在上面几天之前订购它,我该怎么做?

我尝试过使用 collections.sort 和 Arrays.sort 但似乎没有给我想要的效果,有什么想法吗?

public void sortArray() {



}

04-23 12:55:49.010: E/AndroidRuntime(281): 致命异常:main04-23 12:55:49.010:E/AndroidRuntime(281):java.lang.RuntimeException:无法启动 Activity ComponentInfo {org.assignment.timetable/org.assignment.timetable.Timetable}:java.lang.NullPointerException04-23 12:55:49.010:E/AndroidRuntime(281):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)04-23 12:55:49.010:E/AndroidRuntime(281):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)04-23 12:55:49.010: E/AndroidRuntime(281): 在 android.app.ActivityThread.access$2300(ActivityThread.java:125)04-23 12:55:49.010: E/AndroidRuntime(281): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)04-23 12:55:49.010: E/AndroidRuntime(281): 在 android.os.Handler.dispatchMessage(Handler.java:99)04-23 12:55:49.010: E/AndroidRuntime(281): 在 android.os.Looper.loop(Looper.java:123)04-23 12:55:49.010:E/AndroidRuntime(281):在android.app.ActivityThread.main(ActivityThread.java:4627)04-23 12:55:49.010:E/AndroidRuntime(281):在java.lang.reflect.Method.invokeNative( native 方法)04-23 12:55:49.010: E/AndroidRuntime(281): 在 java.lang.reflect.Method.invoke(Method.java:521)04-23 12:55:49.010: E/AndroidRuntime(281): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)04-23 12:55:49.010: E/AndroidRuntime(281): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)04-23 12:55:49.010:E/AndroidRuntime(281):在dalvik.system.NativeStart.main( native 方法)04-23 12:55:49.010:E/AndroidRuntime(281):引起:java.lang.NullPointerException04-23 12:55:49.010: E/AndroidRuntime(281): 在 org.assignment.timetable.Timetable$MyComparator.compare(Timetable.java:51)04-23 12:55:49.010: E/AndroidRuntime(281): 在 org.assignment.timetable.Timetable$MyComparator.compare(Timetable.java:1)04-23 12:55:49.010:E/AndroidRuntime(281):在java.util.TimSort.countRunAndMakeAscending(TimSort.java:320)04-23 12:55:49.010:E/AndroidRuntime(281):在java.util.TimSort.sort(TimSort.java:185)04-23 12:55:49.010:E/AndroidRuntime(281):在java.util.TimSort.sort(TimSort.java:169)04-23 12:55:49.010: E/AndroidRuntime(281): 在 java.util.Arrays.sort(Arrays.java:1907)04-23 12:55:49.010:E/AndroidRuntime(281):在java.util.Collections.sort(Collections.java:1972)04-23 12:55:49.010:E/AndroidRuntime(281):在org.assignment.timetable.Timetable.sortModules(Timetable.java:71)04-23 12:55:49.010: E/AndroidRuntime(281): 在 org.assignment.timetable.Timetable.onCreate(Timetable.java:40)04-23 12:55:49.010:E/AndroidRuntime(281):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)04-23 12:55:49.010:E/AndroidRuntime(281):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)04-23 12:55:49.010: E/AndroidRuntime(281): ... 11 更多

最佳答案

这是一个例子:

    //Assuming that the Module-class has the day stored as a String named "day"
static class MyComparator implements Comparator<Module>{
private final static HashMap<String, Integer> order = getMap();

@Override
public int compare(Module lhs, Module rhs){
int leftOrder = order.get(lhs.day.toLowerCase());
int rightOrder = order.get(rhs.day.toLowerCase());
return leftOrder - rightOrder;
}

private final static HashMap<String, Integer> getMap(){
HashMap<String, Integer> res = new HashMap<String, Integer>();
res.put("monday",0);
res.put("tuesday",1);
res.put("wednesday",2);
res.put("thursday",3);
res.put("friday",4);

return res;
}
}

当你创建了数组(任何你想要的方式)后,你可以像这样排序:

Arrays.sort(myArray, new MyComparator());

或者如果您有一个列表:

Collections.sort(myList, new MyComparator());

现在将对数组中的项目进行排序。

关于java - Android排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10279512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com