Skip to content

Instantly share code, notes, and snippets.

@gitzhou
Created October 23, 2014 15:19
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save gitzhou/53a3bae0e50aed933754 to your computer and use it in GitHub Desktop.
Save gitzhou/53a3bae0e50aed933754 to your computer and use it in GitHub Desktop.
UserStatistics.java
package cc.aaron67.test;
import java.util.ArrayList;
import java.util.List;
public class UserStatistics {
private static List<User> userList;
public static void main(String[] args) {
init();
int start = 3, end = 11;
ArrayList<ArrayList<User>> list = new ArrayList<ArrayList<User>>();
for (int i = 0; i < end - start; ++i) {
list.add(new ArrayList<User>());
}
for (int i = 0; i < userList.size(); ++i) {
for (int j = 0; j < list.size(); ++j) {
String startTime = intToTime(start + j), endTime = intToTime(start + j + 1);
if (userList.get(i).loginTime.compareTo(startTime) >= 0
&& userList.get(i).loginTime.compareTo(endTime) < 0
|| userList.get(i).logoutTime.compareTo(startTime) > 0
&& userList.get(i).logoutTime.compareTo(endTime) <= 0
|| userList.get(i).loginTime.compareTo(startTime) < 0
&& userList.get(i).logoutTime.compareTo(endTime) > 0
|| userList.get(i).loginTime.compareTo(startTime) >= 0
&& userList.get(i).logoutTime.compareTo(endTime) < 0) {
list.get(j).add(userList.get(i));
}
}
}
int i = 0;
while (i < list.size()) {
int j = i + 1;
while (j < list.size() && list.get(i).equals(list.get(j))) {
++j;
}
if (list.get(i).size() != 0) {
System.out.println("[" + (start + i) + ", " + (start + j) + ") "
+ list.get(i).size());
}
i = j;
}
System.out.println("-----------------");
for (int k = 0; k < list.size(); ++k) {
System.out.print((start + k) + " ~ " + (start + k + 1) + ": ");
for (int j = 0; j < list.get(k).size(); ++j) {
System.out.print(list.get(k).get(j).name + " ");
}
System.out.println();
}
}
private static void init() {
userList = new ArrayList<User>();
userList.add(new User("A", "05:37", "09:01"));
userList.add(new User("B", "07:13", "08:00"));
userList.add(new User("C", "05:00", "07:00"));
}
private static String intToTime(int i) {
if (i / 10 == 0) {
return "0" + i + ":00";
} else {
return i + ":00";
}
}
}
class User {
public String name;
public String loginTime;
public String logoutTime;
User(String n, String login, String logout) {
name = n;
loginTime = login;
logoutTime = logout;
}
}
@kizimi
Copy link

kizimi commented Oct 23, 2014

Great God Zhou is awesome~~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment