android-根据升序存储在ArrayList中

android-根据升序存储在ArrayList中,第1张

概述我当前的数据结构如下:publicclassMyDataTemplate{longoccurenceTime;intval1;intval2;publicMyDataTemplate(LongnanoTime,intval1,intval2){this.occurenceTime=nanoTime;this.val1=val1;this.val2=val2;}}List<MyDat

我当前的数据结构如下:

public class MyDataTemplate {  long occurenceTime;  int val1;  int val2;  public MyDataTemplate(Long nanoTime, int val1, int val2) {    this.occurenceTime = nanoTime;    this.val1 = val1;    this.val2 = val2;    }}List<MyDataTemplate> myData = new ArrayList <MyDataTemplate>();

上面的encesenceTime(long)代表我使用System.nanoTime()在AndroID中获得的系统时间

如果数据按时间顺序到达,则可以很好地使用上述数据结构在到达时和到达时存储数据:

newOccurence = new MyDataTemplate(System.nanoTime(), 42, 55)        myData.add(newOccurence);

但是,由于数据没有顺序到达,因此我可能会比旧事件更早出现新事件.

我的任务是确保myData包含按时间升序排列的数据,而不管其何时到达.

我该如何确保?

解决方法:

杂燕麦…

我做了一次尝试,似乎可以轻松地说明一个潜在的“解决方案”:

public class MainActivity extends AppCompatActivity {    public class MyDataTemplate {        long occurenceTime;        int val1;        int val2;        public MyDataTemplate(Long nanoTime, int val1, int val2) {            this.occurenceTime = nanoTime;            this.val1 = val1;            this.val2 = val2;        }    }    class SortByNanoTime implements Comparator<MyDataTemplate> {        public int compare(MyDataTemplate a, MyDataTemplate b) {            if (a.occurenceTime < b.occurenceTime)                return -1;            else if (a.occurenceTime > b.occurenceTime)                return +1;            else                return 0;        }    }    List<MyDataTemplate> myData = new ArrayList<MyDataTemplate>();    @OverrIDe    protected voID onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        myData.add(new MyDataTemplate((long) 30000.2341, 2, 3));        myData.add(new MyDataTemplate((long) 234234.234, 3, 4));        myData.add(new MyDataTemplate((long) 11234234.234, 3, 4));        myData.add(new MyDataTemplate((long) 4.234, 3, 4));        Collections.sort(myData, new SortByNanoTime());        for (MyDataTemplate tempVar : myData) {            Log.i("XXX", "" + tempVar.occurenceTime);        }    }}
总结

以上是内存溢出为你收集整理的android-根据升序存储在ArrayList中全部内容,希望文章能够帮你解决android-根据升序存储在ArrayList中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1092094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存