我在排序我的音乐播放器应用程序中的歌曲列表时出现问题。下面的代码:Sorting arraylist错误?
public ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playlist);
ArrayList<HashMap<String, String>> songsListData = new ArrayList<HashMap<String, String>>();
SongsManager plm = new SongsManager();
// get all songs from sdcard
this.songsList = plm.getPlayList();
// looping through playlist
for (int i = 0; i < songsList.size(); i++) {
// creating new HashMap
HashMap<String, String> song = songsList.get(i);
// adding HashList to ArrayList
songsListData.add(song);
Collections.sort(songsListData); << The problem is in this line
}
.
.
.
.
.
}
它给了这个错误: “绑定不匹配:类型类别的通用方法排序(名单)不适用的参数(ArrayList的>)推断出的类型HashMap的不是有效的替代参数>“
任何人都可以帮我解决这个问题吗?在此先感谢
编辑: 因此,基于帕雷什我把它改为:
Collections.sort(songsListData, new myOwnComparator());
public class myOwnComparator implements Comparator<HashMap<String, String>> {
public myOwnComparator() {
// TODO Auto-generated constructor stub
}
public int compare(HashMap<String, String> o1, HashMap<String, String> o2) {
return o1.get("KeyName").compareTo(o2.get("KeyName"));
}
}
但它仍然不起作用。这里的日志猫:
11-12 12:49:09.450:d/dalvikvm(6584):GC_EXTERNAL_ALLOC释放151K,52%的游离2662K/5447K,外部903K/1034K,暂停23MS 11-12 12点49 :09.505:D/AndroidRuntime(6584):关闭VM 11-12 12:49:09.510:W/dalvikvm(6584):threadid = 1:线程退出时未捕获的异常(组= 0x4001e578) 11-12 12: 49:09.515:E/AndroidRuntime(6584):致命例外:主 11-12 12:49:09.515:E/AndroidRuntime(6584):java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.musicshare/com.example.musicshare.PlayListActivity}:java.lang.NullPointerException 11-12 12:49:09.515:E/AndroidRuntime(6584):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 11-12 12:49:09.515:E/AndroidRuntime(6584):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 11-12 12:49:09.515:E/AndroidRuntime(6584):at android.app.ActivityThread.access $ 1500(ActivityThread.java:117) 11-12 12:49:09.515:E/AndroidRuntime(6584):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:935) 11-12 12:49:09.515:E/AndroidRuntime(6584):在android.os.Handler.dispatchMessage(Handler.java:99) 11-12 12:49:09.515:E/AndroidRuntime(6584):at android .os.Looper.loop(Looper.java:123) 11-12 12:49:09.515:E/AndroidRuntime(6584):at android.app.ActivityThread.main(ActivityThread.java:3691) 11-12 12 :49:09.515:E/AndroidRuntime(6584):在java.lang.reflect.Method.invokeNative(Native Method) 11-12 12: 49:09.515:E/AndroidRuntime(6584):在java.lang.reflect.Method.invoke(Method.java:507) 11-12 12:49:09.515:E/AndroidRuntime(6584):at com.android。 (ZygoteInit.java:847) 11-12 12:49:09.515:E/AndroidRuntime(6584):at com.android.internal.os.ZygoteInit.main 605) 11-12 12:49:09.515:E/AndroidRuntime(6584):at dalvik.system.NativeStart.main(Native Method) 11-12 12:49:09.515:E/AndroidRuntime(6584):由:java.lang.NullPointerException 11-12 12:49:09.515:E/AndroidRuntime(6584):at com.example.musicshare.PlayListActivity $ myOwnComparator.compare(PlayListActivity.java:103) 11-12 12:49: 09.515:E/AndroidRuntime(6584):at com.example.musicshare.PlayListActivity $ myOwnComparator.compare(PlayListActivity.java:1) 11-12 12:49:09.515:E/AndroidRuntime(6584):在java.util.TimSort.countRunAndMakeAscending(TimSort.java:320) 11-12 12:49:09.515:E/AndroidRuntime(6584):at java.util.TimSort.sort(TimSort.java:199) 11-12 12:49:09.515:E/AndroidRuntime(6584):在java.util.TimSort.sort(TimSort.java:169) 11-12 12:49:09.515:E/AndroidRuntime(6584):在java.util.Arrays.sort(Arrays.java:2090) 11-12 12:49:09.515:E/AndroidRuntime(6584):在java.util。 Collections.sort(Collections.java:1965) 11-12 12:49:09.515:E/AndroidRuntime(6584):at com.example.musicshare。PlayListActivity.onCreate(PlayListActivity.java:61) 11-12 12:49:09.515:E/AndroidRuntime(6584):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 11-12 12:49: 09.515:E/AndroidRuntime(6584):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 11-12 12:49:09.515:E/AndroidRuntime(6584):... 11更多 11-12 12:50:21.790:D/dalvikvm(6717):GC_EXTERNAL_ALLOC释放152K,52%空闲2663K/5447K,外部1015K/1034K,暂停52ms 11-12 12:50:21.840:D/AndroidRuntime(6717) VM 11-12 12:50:21.850:W/dalvikvm(6717):threadid = 1:以未捕获的异常退出的线程(组= 0x4001e578) 11-12 12:50:21.855:E/AndroidRuntime(6717):致命EXCEPTION:main 11-12 12:50:21.855:E/Android运行时(6717):java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.musicshare/com.example.musicshare.PlayListActivity}:java.lang.NullPointerException 11-12 12:50:21.855:E/AndroidRuntime (6717):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 11-12 12:50:21.855:E/AndroidRuntime(6717):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667 ) 11-12 12:50:21.855:E/AndroidRuntime(6717):at android.app.ActivityThread.access $ 1500(ActivityThread.java:117) 11-12 12:50:21.855:E/AndroidRuntime(6717) :at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:935) 11-12 12:50:21.855:E/AndroidRuntime(6717):at android.os.Handler.dispatchMessage(Handler.java:99) 11-12 12:50:21.855:E/AndroidRuntime(6717):at android.o s.Looper.loop(Looper.java:123) 11-12 12:50:21.855:E/AndroidRuntime(6717):at android.app.ActivityThread.main(ActivityThread.java:3691) 11-12 12: 50:21.855:E/AndroidRuntime(6717):在java.lang.reflect.Method.invokeNative(本机方法) 11-12 12:50:21.855:E/AndroidRuntime(6717):在java.lang.reflect.Method .invoke(Method.java:507) 11-12 12:50:21.855:E/AndroidRuntime(6717):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:847) 11- 12 12:50:21.855:E/AndroidRuntime(6717):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 11-12 12:50:21.855:E/AndroidRuntime(6717):在dalvik.system.NativeStart.main(本地方法) 11-12 12:50:21.855:E/AndroidRuntime(6717):引起:java.lang.NullPointerException 11-12 12:50:21.855:E/AndroidRuntime(6717):at com.example.musicshare.PlayListActivity $ myOwnComparator.compare(PlayListActivity.java:103) 11-12 12:50:21.855:E/AndroidRuntime 6717):at com.example.musicshare.PlayListActivity $ myOwnComparator.compare(PlayListActivity.java:1) 11-12 12:50:21.855:E/AndroidRuntime(6717):在java.util.TimSort.countRunAndMakeAscending(TimSort。 java:320) 11-12 12:50:21.855:E/AndroidRuntime(6717):在java.util.TimSort.sort(TimSort.java:199) 11-12 12:50:21.855:E/AndroidRuntime 6717):在java.util.TimSort.sort(TimSort.java:169) 11-12 12:50:21.855:E/AndroidRuntime(6717):在java.util.Arrays.sort(Arrays.java:2090) 11-12 12:50:21.855:E/AndroidRuntime(6717):在java.util.Collections.sort(Collections.java:1965) 11-12 12:50:21.855: E/AndroidRuntime(6717):at com.example.musicshare.PlayListActivity.onCreate(PlayListActivity.java:61) 11-12 12:50:21.855:E/AndroidRuntime(6717):at android.app.Instrumentation.callActivityOnCreate Instrumentation.java:1047) 11-12 12:50:21.855:E/AndroidRuntime(6717):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 11-12 12:50:21.855:E/AndroidRuntime(6717):...11多
商店HashMap中值(不是整个HashMap)列表中,并对列表进行排序。 –
如何?对不起,我不是很好的编程又 –
首先将其存储在一个列表'列表串= song.values()',然后'值Collections.sort(字符串)排序' –