2016-01-21 52 views
0

我已经根据默认浏览器和谷歌浏览器的日期,名称和网址创建了一条记录。我将基于两个浏览器的历史信息结合起来,并使用Hashmap进行显示。所以现在我想要做的是我想按日期和名称进行排序。但是,由于我的知识,我正面临着实施它的困难。任何意见和建议将不胜感激。先谢谢你。Android:我如何根据两个来源的值对HashMap进行排序?

//default browser 
if (mCur.moveToFirst() && mCur.getCount() > 0) { 
     int titleIdx = mCur.getColumnIndex(Browser.BookmarkColumns.TITLE); 
     int urlIdx = mCur.getColumnIndex(Browser.BookmarkColumns.URL); 
     int dateIdx = mCur.getColumnIndex(Browser.BookmarkColumns.DATE); 

     while (mCur.isAfterLast() == false) { 
      HashMap temp = new HashMap(); 
      temp.put(FIRST_COLUMN,getDate(mCur.getLong(dateIdx), "dd/MM/yyyy HH:mm:ss  ")); 
      temp.put(SECOND_COLUMN, mCur.getString(titleIdx)); 
      temp.put(THIRD_COLUMN, mCur.getString(urlIdx)); 
      list.add(temp); 
      mCur.moveToNext(); 
     } 
    } 
    //google chrome 
    if (mCur2.moveToFirst() && mCur2.getCount() > 0) { 
     int dateIdx2 = mCur2.getColumnIndex(Browser.BookmarkColumns.DATE); 
     int titleIdx2 = mCur2.getColumnIndex(Browser.BookmarkColumns.TITLE); 
     int urlIdx2 = mCur2.getColumnIndex(Browser.BookmarkColumns.URL); 

     while (mCur2.isAfterLast() == false) { 
      HashMap temp = new HashMap(); 
      temp.put(FIRST_COLUMN, getDate(mCur2.getLong(dateIdx2), "dd/MM/yyyy HH:mm:ss  ")); 
      temp.put(SECOND_COLUMN, mCur2.getString(titleIdx2)); 
      temp.put(THIRD_COLUMN, mCur2.getString(urlIdx2)); 
      list.add(temp); 
      mCur2.moveToNext(); 
     } 
    } 

回答

0

使用内部类的概念进行排序散列图,不使用两个哈希地图,

首先排序一流水平的哈希表,然后进行排序的哈希值,这在相同的哈希地图,你将得到这两个排序的值

+0

内部类概念? – Dave

1

与排序比较像下面为您的数据的模型类:

public class MyItem { 
String title; 
String url; 
String date; 

public MyItem(String title, String url, String date) { 
    this.title = title; 
    this.url = url; 
    this.date = date; 
} 

public static Comparator<MyItem> sortByDate = new Comparator<MyItem>() { 
    @Override 
    public int compare(MyItem item1, MyItem item2) { 
     return item1.date.compareTo(item2.date); 
    } 
}; 

public static Comparator<MyItem> sortByTitle = new Comparator<MyItem>() { 
    @Override 
    public int compare(MyItem item1, MyItem item2) { 
     return item1.title.compareTo(item2.title); 
    } 
}; 

}

然后在你的代码 这样使用它创建的列表/阵列Myitems 然后调用函数来排序=> Arrays.sort(yourMyItemsObject,MyItem.sortByTitle);

根据您的排序需要更改compare()方法的代码。

相关问题