av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

java取某段/某個(gè)時(shí)間段的值的方法

瀏覽:70日期:2022-08-21 10:39:17

直接上代碼

測試類

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:按照兩位一個(gè)分解動(dòng)作代碼 //step2:找到動(dòng)作代碼總包含action代碼的時(shí)間,找到第一次出現(xiàn)的時(shí)間和最后一次出現(xiàn)的時(shí)間 List<ActionTime> actionTime = new ArrayList<>(); if (CollectionUtils.isEmpty(tsData)) { return actionTime; } //是不是第一次出現(xiàn) boolean isFirst = true; //是不是已經(jīng)出現(xiàn)過 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'); //第一次出現(xiàn),則記錄時(shí)間,最后一次出現(xiàn)也記錄時(shí)間 if (actions.contains(action)) {if (isFirst) { //記錄開始時(shí)間 record = new ActionTime(); record.setStartTime(data.getTimestamp()); //設(shè)置標(biāo)志位 isFirst = false; isAppear = true;} } else {//判斷前面是否已經(jīng)出現(xiàn)過actionif (isAppear) { //記錄結(jié)束時(shí)間 record.setEndTime(data.getTimestamp()); actionTime.add(record); //重置標(biāo)志位 isAppear = false; isFirst = true;} } } return actionTime; }}

實(shí)體類

@Data@AllArgsConstructor@NoArgsConstructorpublic 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 結(jié)束位置 */ 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); }}

測試類改進(jìn)

@Override public List<ActionTime> doCalculateActionTime(List<TsData> tsData, String action) { //step1:按照兩位一個(gè)分解動(dòng)作代碼 //step2:找到動(dòng)作代碼總包含action代碼的時(shí)間,找到第一次出現(xiàn)的時(shí)間和最后一次出現(xiàn)的時(shí)間 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()); //是不是第一次出現(xiàn) boolean isFirst = true; //是不是已經(jīng)出現(xiàn)過 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); //第一次出現(xiàn),則記錄時(shí)間,最后一次出現(xiàn)也記錄時(shí)間 if (actions.contains(action)) {if (isFirst) { //記錄開始時(shí)間 record = new ActionTime(); record.setStartTime(data.getTimestamp()); //設(shè)置標(biāo)志位 isFirst = false; isAppear = true;} } else {//判斷前面是否已經(jīng)出現(xiàn)過actionif (isAppear) { //記錄結(jié)束時(shí)間 record.setEndTime(data.getTimestamp()); actionTime.add(record); //重置標(biāo)志位 isAppear = false; isFirst = true;} } } return actionTime; }

到此這篇關(guān)于java取某段/某個(gè)時(shí)間段的值的方法的文章就介紹到這了,更多相關(guān)java取某段/某個(gè)時(shí)間段值內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 欧美在线观看一区二区三区 | 日本高潮视频 | av网站观看| 黄色在线免费观看视频 | 国产福利在线 | 久久久精品 | 精品久久久久久久久久 | 91网站免费 | 哦┅┅快┅┅用力啊┅aps | 久草精品视频在线看网站免费 | 亚洲午夜在线观看 | 一级毛片免费播放视频 | 日韩资源| 日韩一级免费视频 | 91精品国产99久久久久久红楼 | 久久av网| 亚洲精品一区二区三区在线 | 日韩欧美国产精品 | 国产在线观看网站 | 四虎影院www| 日韩免费在线观看视频 | 8x8ⅹ国产精品一区二区 | 超碰在线99 | 国产三级午夜理伦三级 | 五月婷婷激情网 | 日本三级一区 | 日韩精品视频网站 | 亚洲国产片 | 欧美日皮视频 | 国产精品日韩欧美 | 免费观看一区二区三区 | 欧美日韩国产在线播放 | 一区二区三区高清 | 九月丁香婷婷 | 亚洲成人黄色 | 欧美激情视频一区二区三区 | 亚洲三级黄色片 | 99久久久久久 | 一区二区三区视频 | 久久久精品一区二区 | 一级黄色a |