91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用java如何獲取指定時間段的值

發布時間:2020-11-16 15:54:30 來源:億速云 閱讀:347 作者:Leah 欄目:開發技術

本篇文章為大家展示了使用java如何獲取指定時間段的值,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

直接上代碼

測試類

public class TestData {
  public static void main(String[] args) {

    List<TsData> list = new ArrayList<>();
    list.add(new TsData("11","08",11111l));
    list.add(new TsData("11","080405",22222l));
    list.add(new TsData("11","09070802",33333l));
    list.add(new TsData("11","09234567",44444l));
    list.add(new TsData("11","9867342",55555l));
    list.add(new TsData("11","08607342",55555l));
    list.add(new TsData("11","08607342",555556l));
    list.add(new TsData("11","dad8607342",5555567l));

    System.out.println(doCalculateActionTime(list,"08")+" uiui");
  }

  public static List<ActionTime> doCalculateActionTime(List<TsData> tsData, String action) {
    //step1:按照兩位一個分解動作代碼
    //step2:找到動作代碼總包含action代碼的時間,找到第一次出現的時間和最后一次出現的時間
    List<ActionTime> actionTime = new ArrayList<>();
    if (CollectionUtils.isEmpty(tsData)) {
      return actionTime;
    }
    //是不是第一次出現
    boolean isFirst = true;
    //是不是已經出現過
    boolean isAppear = false;
    ActionTime record = new ActionTime();
    for (TsData data : tsData) {
      if (null == data.getTimestamp() || StringUtils.isEmpty(data.getValue())) {
        continue;
      }
      List<String> actions = ProjectStringUtil.getStrList(data.getValue(), 2);
      System.out.println(actions+" actions");

      //第一次出現,則記錄時間,最后一次出現也記錄時間
      if (actions.contains(action)) {
        if (isFirst) {
          //記錄開始時間
          record = new ActionTime();
          record.setStartTime(data.getTimestamp());
          //設置標志位
          isFirst = false;
          isAppear = true;
        }

      } else {
        //判斷前面是否已經出現過action
        if (isAppear) {
          //記錄結束時間
          record.setEndTime(data.getTimestamp());
          actionTime.add(record);
          //重置標志位
          isAppear = false;
          isFirst = true;
        }

      }

    }
    return actionTime;
  }
}

實體類

@Data
@AllArgsConstructor
@NoArgsConstructor
public class TsData {

  private String label;
  private String value;
  private Long timestamp;
}

工具類

public class ProjectStringUtil {
  /**
   * 把原始字符串分割成指定長度的字符串列表
   *
   * @param inputString 原始字符串
   * @param length   指定長度
   * @return
   */

  /**
   * 把原始字符串分割成指定長度的字符串列表
   *
   * @param inputString 原始字符串
   * @param length   指定長度
   * @param size    指定列表大小
   */
  public static List<String> getStrList(String inputString, int length, int size) {
    List<String> list = new ArrayList<String>();
    for (int index = 0; index < size; index++) {
      String childStr = substring(inputString, index * length,
          (index + 1) * length);
      list.add(childStr);
    }
    return list;
  }

  /**
   * 分割字符串,如果開始位置大于字符串長度,返回空
   *
   * @param str 原始字符串
   * @param f  開始位置
   * @param t  結束位置
   */
  public static String substring(String str, int f, int t) {
    if (f > str.length()) {
      return null;

    }
    if (t > str.length()) {
      return str.substring(f);
    } else {
      return str.substring(f, t);
    }
  }

  public static List<String> getStrList(String inputString, int length) {
    int size = inputString.length() / length;
    if (inputString.length() % length != 0) {
      size += 1;
    }
    return getStrList(inputString, length, size);
  }
}

測試類改進

  @Override
  public List<ActionTime> doCalculateActionTime(List<TsData> tsData, String action) {
    //step1:按照兩位一個分解動作代碼
    //step2:找到動作代碼總包含action代碼的時間,找到第一次出現的時間和最后一次出現的時間
    List<ActionTime> actionTime = new ArrayList<>();
    if (CollectionUtils.isEmpty(tsData)) {
      return actionTime;
    }
    //去重
    tsData = tsData.stream().collect(
        Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TsData::getTimestamp))),
            ArrayList::new));
    // 排序
    tsData = tsData.stream().sorted(Comparator.comparing(TsData::getTimestamp)).collect(Collectors.toList());
    //是不是第一次出現
    boolean isFirst = true;
    //是不是已經出現過
    boolean isAppear = false;
    ActionTime record = new ActionTime();
    for (TsData data : tsData) {
      if (null == data.getTimestamp() || StringUtils.isEmpty(data.getValue())) {
        continue;
      }
      List<String> actions = ProjectStringUtil.getStrList(data.getValue(), 2);
      //第一次出現,則記錄時間,最后一次出現也記錄時間
      if (actions.contains(action)) {
        if (isFirst) {
          //記錄開始時間
          record = new ActionTime();
          record.setStartTime(data.getTimestamp());
          //設置標志位
          isFirst = false;
          isAppear = true;
        }

      } else {
        //判斷前面是否已經出現過action
        if (isAppear) {
          //記錄結束時間
          record.setEndTime(data.getTimestamp());
          actionTime.add(record);
          //重置標志位
          isAppear = false;
          isFirst = true;
        }

      }

    }
    return actionTime;
  }

上述內容就是使用java如何獲取指定時間段的值,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武安市| 搜索| 肇东市| 开江县| 临夏市| 交城县| 连山| 噶尔县| 百色市| 西昌市| 响水县| 道真| 错那县| 灌南县| 威远县| 南阳市| 富平县| 山阴县| 韶山市| 札达县| 和顺县| 德惠市| 吉安县| 荆州市| 海南省| 盐源县| 革吉县| 雷波县| 临高县| 金塔县| 白河县| 宝鸡市| 湘乡市| 扎鲁特旗| 杭锦旗| 南木林县| 奉节县| 新河县| 庄浪县| 扶余县| 平遥县|