2016-04-25 55 views
-1

时自动分类新项目您好,我有和Android模型TopStory的应用程序。我想创建一个TopStory(topStories)集合,通过值(ie.time)对商品进行排序每当添加新商品时。新添加的项目将在正确的索引(按值时间顺序)(即:创建一个已经排序的收集,以便每当我们添加新项目时,它将自动插入到正确的位置)Android创建一个集合,当添加

这是我的模型

public class TopStory { 
    private int id; 
    private String title; 
    private String author; 
    private int score; 
    private JSONArray kids; 
    private long time; 
    private String url; 

    public TopStory() { 
    } 

    public TopStory(int id, String title, String author, int point, long time,String url) { 
     this.id = id; 
     this.title = title; 
     this.author = author; 
     this.score = point; 
     this.time = time; 
     this.url = url; 
    } 

我该用什么? PriorityQueue, TreeMap,...?如何创建这种类型的集合?任何帮助非常感谢。谢谢。

+0

看到'java.util.Collections中#binarySearch' – pskink

+0

喜的binarySearch是要使用搜索值来找到它的索引?但我们想创建一个已经排序的集合? –

+0

它返回:'该元素的非负索引,或负索引是-index-1,其中元素将被插入' – pskink

回答

0

如果我正在阅读你的问题,你有一个对象,并且你想根据整数属性将它分类到一个数据结构中。在这种情况下,我建议实施一个二叉树。

+0

抱歉有点不清楚。我的问题是创建一个已经排序的集合,以便每当我们添加新的项目时,它会自动插入到正确的位置。可以使用binaryTree访问项目基于索引? –

+0

如果你正确地实现了算法,插入一个对象到binaryTree将把它放在下一个最大的和下一个最小的对象之间 –

+0

,但问题是,binaryTree不支持通过索引号访问项目(即在recycleView中的位置) 。我们需要坚持列表 –

1

您可以使用TreeMap的数据结构http://developer.android.com/reference/java/util/TreeMap.html

查找它将如何为你工作,

http://www.java2novice.com/java-collections-and-util/treemap/comparator-user-object/

TreeMap<Empl,String> tm = new TreeMap<Empl, String>(new MyNameComp()); 

tm.put(new Empl("Ram",3000), "RAM"); 
tm.put(new Empl("John",6000), "JOHN"); 
tm.put(new Empl("Crish",2000), "CRISH"); 
tm.put(new Empl("Tom",2400), "TOM"); 

Set<Empl> keys = tm.keySet(); 
for(Empl key:keys){ 
    System.out.println(key+" ==> "+tm.get(key)); 
} 
+0

非常感谢,我们可以更改字符串参数到它更适合List对象的东西(例如topStories模型列表)? –

相关问题