Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Date;
- import java.util.ArrayList;
- import java.util.Scanner;
- import java.util.Collections;
- import java.util.HashMap;
- class Scheduler<T> {
- private HashMap <Date,T> map;
- public Scheduler () {
- map = new HashMap <> ();
- }
- public void add (Date d, T t) {
- map.put(d,t);
- }
- public boolean remove (Date d) {
- if(map.containsKey(d)) {
- map.remove(d);
- return true;
- }
- return false;
- }
- public T next () {
- Date now = new Date();
- Date date = new Date();
- T temp = null;
- for(Date d : map.keySet()) {
- if(d.after(now)) {
- if(temp == null) {
- temp = map.get(d);
- date = d;
- } else if (d.before(date)) {
- temp = map.get(d);
- date = d;
- }
- }
- }
- return temp;
- }
- public T last () {
- Date now = new Date();
- Date date = new Date();
- T temp = null;
- for(Date d : map.keySet()) {
- if(d.before(now)) {
- if(temp == null) {
- temp = map.get(d);
- date = d;
- } else if (d.after(date)) {
- temp = map.get(d);
- date = d;
- }
- }
- }
- return temp;
- }
- public ArrayList <T> getAll (Date begin, Date end) {
- ArrayList <T> list = new ArrayList <> ();
- for(Date d : map.keySet()) {
- if(d.after(begin)&&d.before (end))
- list.add(map.get(d));
- }
- return list;
- }
- public T getFirst () {
- Date date = new Date();
- T min = null;
- for(Date d : map.keySet()) {
- if(d.before(date)) {
- date = d;
- min = map.get(date);
- }
- }
- return min;
- }
- public T getLast () {
- Date date = new Date();
- T max = null;
- for(Date d : map.keySet()) {
- if(d.after(date)) {
- date = d;
- max = map.get(date);
- }
- }
- return max;
- }
- }
- public class SchedulerTest {
- public static void main(String[] args) {
- Scanner jin = new Scanner(System.in);
- int k = jin.nextInt();
- if ( k == 0 ) {
- Scheduler<String> scheduler = new Scheduler<String>();
- Date now = new Date();
- scheduler.add(new Date(now.getTime()-7200000), jin.next());
- scheduler.add(new Date(now.getTime()-3600000), jin.next());
- scheduler.add(new Date(now.getTime()-14400000), jin.next());
- scheduler.add(new Date(now.getTime()+7200000), jin.next());
- scheduler.add(new Date(now.getTime()+14400000), jin.next());
- scheduler.add(new Date(now.getTime()+3600000), jin.next());
- scheduler.add(new Date(now.getTime()+18000000), jin.next());
- System.out.println(scheduler.getFirst());
- System.out.println(scheduler.getLast());
- }
- if ( k == 3 ) { //test Scheduler with String
- Scheduler<String> scheduler = new Scheduler<String>();
- Date now = new Date();
- scheduler.add(new Date(now.getTime()-7200000), jin.next());
- scheduler.add(new Date(now.getTime()-3600000), jin.next());
- scheduler.add(new Date(now.getTime()-14400000), jin.next());
- scheduler.add(new Date(now.getTime()+7200000), jin.next());
- scheduler.add(new Date(now.getTime()+14400000), jin.next());
- scheduler.add(new Date(now.getTime()+3600000), jin.next());
- scheduler.add(new Date(now.getTime()+18000000), jin.next());
- System.out.println(scheduler.next());
- System.out.println(scheduler.last());
- ArrayList<String> res = scheduler.getAll(new Date(now.getTime()-10000000), new Date(now.getTime()+17000000));
- Collections.sort(res);
- for ( String t : res ) {
- System.out.print(t+" , ");
- }
- }
- if ( k == 4 ) {//test Scheduler with ints complex
- Scheduler<Integer> scheduler = new Scheduler<Integer>();
- int counter = 0;
- ArrayList<Date> to_remove = new ArrayList<Date>();
- while ( jin.hasNextLong() ) {
- Date d = new Date(jin.nextLong());
- int i = jin.nextInt();
- if ( (counter&7) == 0 ) {
- to_remove.add(d);
- }
- scheduler.add(d,i);
- ++counter;
- }
- jin.next();
- while ( jin.hasNextLong() ) {
- Date l = new Date(jin.nextLong());
- Date h = new Date(jin.nextLong());
- ArrayList<Integer> res = scheduler.getAll(l,h);
- Collections.sort(res);
- System.out.println(l+" <: "+print(res)+" >: "+h);
- }
- System.out.println("test");
- ArrayList<Integer> res = scheduler.getAll(new Date(0),new Date(Long.MAX_VALUE));
- Collections.sort(res);
- System.out.println(print(res));
- for ( Date d : to_remove ) {
- scheduler.remove(d);
- }
- res = scheduler.getAll(new Date(0),new Date(Long.MAX_VALUE));
- Collections.sort(res);
- System.out.println(print(res));
- }
- }
- private static <T> String print(ArrayList<T> res) {
- if ( res == null || res.size() == 0 ) return "NONE";
- StringBuffer sb = new StringBuffer();
- for ( T t : res ) {
- sb.append(t+" , ");
- }
- return sb.substring(0, sb.length()-3);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment