日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android list排序,使用Collections.sort()对List/ArrayList进行排序

發布時間:2024/1/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android list排序,使用Collections.sort()对List/ArrayList进行排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天寫Android應用,遇到一個對List進行排序的問題,經過google的提示,發現用Collections.sort(List list, Comparator c)?就可以對List/ArrayList進行排序,很Happy的去寫代碼做測試,結果發現排序沒有起作用,檢查之,發現代碼沒什么問題啊(代碼如下),奇怪了。

publicvoidchangeSort(inttype){

Comparator?comparator;

Toast.makeText(this,"type=="+type,5).show();

switch(type){

case1:{

//?價格從低到高排序

comparator?=?newPriceLowToHighComparator();

Collections.sort(list,?comparator);

}

break;

case2:{

//?價格從高到低排序

comparator?=?newPriceHighToLowComparator();

Collections.sort(list,?comparator);

}

break;

}

adapter.setItemBeanList(list);

adapter.notifyDataSetChanged();

}

publicclassPriceHighToLowComparatorimplementsComparator?{

@Override

publicintcompare(ItemBean?itemBean1,?ItemBean?itemBean2)?{

doubleprice1?=0;

doubleprice2?=0;

if(itemBean1.getItemPrice()?!=null&&?!"".equals(itemBean1.getItemPrice())){

price1?=?Double.parseDouble(itemBean1.getItemPrice());

}

if(itemBean2.getItemPrice()?!=null&&?!"".equals(itemBean2.getItemPrice())){

price2?=?Double.parseDouble(itemBean2.getItemPrice());

}

if(price1?>?price2){

return-1;

}

elseif(price1?

return1;

}

else{

return0;

}

}

}

然后就是各種改返回值,反復改了三次以后發現問題所在,返回值不正確,上面的這個類是list的價格從高到低的規則類,Collections.sort(List list, Comparator c)?會根據返回值來對list中的數據進行排序,最初如果price1>price2,則return 1,但是試驗發現list中的數據無變化,隨后改成return -1,試驗發現list中的數據能按照預想的效果排序了,可是新的問題出來了,為什么price1>price2,但是要返回-1呢?

繼續google之,發現http://solodu.iteye.com/blog/630891 這篇文章的主人在文章結尾說了一段話“要充分理解排序就必須先理解最后的return 0, -1 , 1? 這三個數字代表的含義。它們不是代表數字而是代表前面和后面要比較的值哪個大哪個小?如果是0表示要比較的這兩個數字相等。如果是1表示前面數字大,如果-1表示前面數字小。要理解這個就沒問題了。”但是結合我自己寫的這個排序規則,我突然覺得0,1,-1這三個數好像不是說誰大誰小,而是一個排序的問題,當返回-1時,前面的變量(即price1)排在后面的變量(price2)的前面,反之則排在后面。果真如此么,正好就著這次的項目的排序要求比較多,也就多寫幾個規則測試一下,結果確實如此,根據不同規則,如果想將前面的變量放到后面的變量之前,則返回-1即可。

總結

以上是生活随笔為你收集整理的android list排序,使用Collections.sort()对List/ArrayList进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。