我当前的数据结构如下:
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中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)