java - Java 中按日期顺序对 List<String[]> 进行排序

标签 java android list sorting arraylist

我有一个以下形式的字符串数组列表

List<String[]> currentLoadAddressLocations = new ArrayList<>();

通过 JSONObject 数组进行设置和解析

try {
            JSONObject dataObject = new JSONObject(data);
            JSONArray dataObjArray = dataObject.getJSONArray("stops");
            Log.i(TAG, dataObjArray.toString());

        for (int i = 0; i < dataObjArray.length(); i++) {
            JSONObject addressAndLocation = dataObjArray.getJSONObject(i);
            addressGPointJSON.add(addressAndLocation.getString("address"));
            locationGPointJSON.add(addressAndLocation.getString("location"));
            cityGPointJSON.add(addressAndLocation.getString("city"));
            stateGPointJSON.add(addressAndLocation.getString("state"));
            fromGPointJSON.add(addressAndLocation.getString("from"));
            latGPointJSON.add(reverseGeocoderLatLong(addressGPointJSON.get(i) + ", " + cityGPointJSON.get(i) + ", " + stateGPointJSON.get(0), true));
            longGPointJSON.add(reverseGeocoderLatLong(addressGPointJSON.get(i) + ", " + cityGPointJSON.get(i) + ", " + stateGPointJSON.get(0), false));

            currentLoadAddressLocations.add(i,
                    new String[]{
                            fromGPointJSON.get(i),
                            addressGPointJSON.get(i),
                            locationGPointJSON.get(i),
                            cityGPointJSON.get(i),
                            stateGPointJSON.get(i),
                            latGPointJSON.get(i),
                            longGPointJSON.get(i)
                    });
        } // end of for loop
        } // end of try catch block
        catch(JSONException e){
            e.printStackTrace();
        }

目前,代码返回了我需要的数据结构,形式为 String[]

["2017-03-30 21:00:00", "Address example 123", "Location Example", "CITY", "STATE", "lat", "long"]

根据返回的 JSON 对象中的停靠站数量重复。我需要找到一种方法来按时间对 currentLoadAddressLocations 数组内的数组的第一个值进行排序,因此如果其中一个日期是“2017-03-30 15:00:00”,另一个日期是“2017 -03-30 14:00:00”,则前面的日期优先,并将日期移至 currenLoadAddressLocations 数组的顶部,同时将第二个日期移至下方。我很难找到一种方法来做到这一点。目前我知道如果我将日期解析为:

,我可以比较日期
Date from = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US).parse("2017-03-30 21:00:00");

但不知道如何在循环 currentLoadAddressLocations 列表时解决此问题。此外,我不知道如何访问这些值以进行比较。我可以使用循环浏览选择

for(String[] array: currentLoadAddressLocations){
            for(String s: array){
                Log.i(TAG,"ITEM: " +  s);
            }
        }

但是由于它们位于字符串数组内,因此无法将其更改为日期格式,除非我更改它们然后将它们解析回字符串。

如有任何建议,我们将不胜感激。

最佳答案

答案是您应该将 String[] 转换为 AddressDateLocation 类数组。一旦你这样做了,按照你想要的方式对数据进行排序就会容易得多

public class AddressDateLocation implements Comparable<AddressDateLocation> {
  Date date;
  String address;
  String location;

  public void setDate(Date d) {}
  public Date getDate() ...
  public void setLocation(String loc) ...
  public String getLocation() ...
  public void setAddress(String addr) ...
  public String getDate() ...

  public int compareTo(AddressDateLocation other) ...
}

关于java - Java 中按日期顺序对 List<String[]> 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43353227/

相关文章:

java - 如何在几秒钟内更改和恢复 JTable 中的单元格背景?

android - 找不到与给定名称匹配的资源(在 'layout_toRightOf' 处,值为 '@id/right_item_menu_fragment' )

c# - 使用 linq 查询输出列表/其他数据结构

c# - 如何在一行 C# 3.0 中将 object[] 转换为 List<string>?

java - arraylist 的 if 语句有问题

java - IntelliJ IDEA 14步反编译代码?

java - H2 嵌入模式 - DELETE 命令给出 COLUMN NOT FOUND 错误

android - 我们可以使用 netbeans 编写 Android 代码吗

java - android中2个 View 之间的碰撞

Python - 检查列表中的数字是否是数字的因子