Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2fce918

Browse files
committed
feat: update HLLUtils.java
更新代码,并添加 java doc 注释
1 parent f16ff77 commit 2fce918

File tree

1 file changed

+67
-14
lines changed

1 file changed

+67
-14
lines changed

‎java/src/main/java/utils/HLLUtils.java

Lines changed: 67 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,40 @@
88

99

1010
public class HLLUtils {
11-
public static String TIME_FORMAT = "yyyyMMddHHmm";
1211
private static String TIME_FORMAT_MONTH_DAY = "MMdd";
1312
private static String TIME_FORMAT_DAY_MINUTES = "MMddHHmm";
1413
private static String TIME_FORMAT_DAY_HOURS = "MMddHH";
15-
static SimpleDateFormat FORMAT_MONTH_DAY = new SimpleDateFormat(TIME_FORMAT_MONTH_DAY);
16-
static SimpleDateFormat FORMAT_DAY_HOURS = new SimpleDateFormat(TIME_FORMAT_DAY_HOURS);
17-
static SimpleDateFormat FORMAT_DAY_MINUTES = new SimpleDateFormat(TIME_FORMAT_DAY_MINUTES);
14+
privatestatic SimpleDateFormat FORMAT_MONTH_DAY = new SimpleDateFormat(TIME_FORMAT_MONTH_DAY);
15+
privatestatic SimpleDateFormat FORMAT_DAY_HOURS = new SimpleDateFormat(TIME_FORMAT_DAY_HOURS);
16+
privatestatic SimpleDateFormat FORMAT_DAY_MINUTES = new SimpleDateFormat(TIME_FORMAT_DAY_MINUTES);
1817

18+
/**
19+
* 获取两个日期之间的键
20+
*
21+
* @param d1 日期1
22+
* @param d2 日期2
23+
* @return 键列表
24+
*/
1925
public static List<String> parse(Date d1, Date d2) {
20-
ArrayList list;
26+
List<String> list = newArrayList<>();
2127
if (d1.compareTo(d2) == 0) {
22-
return Collections.emptyList();
28+
return list;
2329
}
2430

25-
// if less than an hour, sum all minutes
31+
// 若时间差小于 1 小时
2632
long delta = d2.getTime() - d1.getTime();
2733
if (delta == 0) {
28-
return Collections.emptyList();
34+
return list;
2935
}
3036
if (delta < DateUtils.MILLIS_PER_HOUR) {
3137
int minutesDiff = (int) (delta / DateUtils.MILLIS_PER_MINUTE);
32-
list = new ArrayList<String>();
3338
Date date1Increment = d1;
3439
while (d2.compareTo(date1Increment) > 0 && minutesDiff > 0) {
3540
list.add(FORMAT_DAY_MINUTES.format(date1Increment));
3641
date1Increment = DateUtils.addMinutes(date1Increment, 1);
3742
}
38-
// if less than an day, trim hours sum all, pass minutes part
43+
// 若时间差小于 1 天
3944
} else if (delta < DateUtils.MILLIS_PER_DAY) {
40-
list = new ArrayList<String>();
4145
Date dateLastPortionHour = DateUtils.truncate(d2, Calendar.HOUR_OF_DAY);
4246
list.addAll(parse(dateLastPortionHour, d2));
4347
long delta2 = dateLastPortionHour.getTime() - d1.getTime();
@@ -49,13 +53,11 @@ public static List<String> parse(Date d1, Date d2) {
4953
}
5054
list.addAll(parse(d1, DateUtils.addHours(dateLastPortionHour, -1 * hoursDiff)));
5155
} else {
52-
list = new ArrayList<String>();
5356
Date dateLastPortionDay = DateUtils.truncate(d2, Calendar.DAY_OF_MONTH);
5457
list.addAll(parse(dateLastPortionDay, d2));
5558
long delta2 = dateLastPortionDay.getTime() - d1.getTime();
56-
// if less than an month, trim days sum all, pass hours part
59+
// 若时间差小于 1 个月
5760
int daysDiff = (int) (delta2 / DateUtils.MILLIS_PER_DAY);
58-
// Date date1Increment = d1;
5961
Date date1Increment = DateUtils.addDays(dateLastPortionDay, -1 * daysDiff);
6062
while (dateLastPortionDay.compareTo(date1Increment) > 0 && daysDiff > 0) {
6163
list.add(FORMAT_MONTH_DAY.format(date1Increment));
@@ -66,19 +68,70 @@ public static List<String> parse(Date d1, Date d2) {
6668
return list;
6769
}
6870

71+
/**
72+
* 获取从 date 往前推 minutes 分钟的键列表
73+
*
74+
* @param date 特定日期
75+
* @param minutes 分钟数
76+
* @return 键列表
77+
*/
6978
public static List<String> getLastMinutes(Date date, int minutes) {
7079
return parse(DateUtils.addMinutes(date, -1 * minutes), date);
7180
}
7281

82+
/**
83+
* 获取从 date 往前推 hours 个小时的键列表
84+
*
85+
* @param date 特定日期
86+
* @param hours 小时数
87+
* @return 键列表
88+
*/
7389
public static List<String> getLastHours(Date date, int hours) {
7490
return parse(DateUtils.addHours(date, -1 * hours), date);
7591
}
7692

93+
/**
94+
* 获取从 date 开始往前推 days 天的键列表
95+
*
96+
* @param date 特定日期
97+
* @param days 天数
98+
* @return 键列表
99+
*/
77100
public static List<String> getLastDays(Date date, int days) {
78101
return parse(DateUtils.addDays(date, -1 * days), date);
79102
}
80103

104+
/**
105+
* 为keys列表添加前缀
106+
*
107+
* @param keys 键列表
108+
* @param prefix 前缀符号
109+
* @return 添加了前缀的键列表
110+
*/
81111
public static List<String> addPrefix(List<String> keys, String prefix) {
82112
return keys.stream().map(key -> prefix + key).collect(Collectors.toList());
83113
}
114+
115+
public static void main(String[] args) {
116+
Date d1 = new Date();
117+
d1.setTime((long) (System.currentTimeMillis() - 3600 * 1000 * 24 * 1.2));
118+
Date d2 = new Date();
119+
List<String> res = parse(d1, d2);
120+
res.forEach(System.out::println);
121+
List<String> newRes = addPrefix(res, "USER:LOGIN:");
122+
System.out.println("-------");
123+
newRes.forEach(System.out::println);
124+
125+
List<String> lastThreeDays = getLastDays(new Date(), 3);
126+
System.out.println("-------");
127+
lastThreeDays.forEach(System.out::println);
128+
129+
List<String> lastTwoHours = getLastHours(new Date(), 2);
130+
System.out.println("-------");
131+
lastTwoHours.forEach(System.out::println);
132+
133+
List<String> lastFourMinutes = getLastMinutes(new Date(), 4);
134+
System.out.println("-------");
135+
lastFourMinutes.forEach(System.out::println);
136+
}
84137
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /