package w8; public class Main { public static void main(String[] args) throws InterruptedException { // Pair test Pair pair = new Pair<>("age", 25); System.out.println("Original: " + pair); System.out.println("Swap: " + pair.swap()); // Cache test Cache cache = new Cache<>(3000); cache.put("name", "Ahmed"); System.out.println("Cache get: " + cache.get("name")); } } class Pair { private K key; private V value; public Pair(K key, V value) { this.key = key; this.value = value; } public Pair swap() { return new Pair<>(value, key); } public String toString() { return "Pair{" + key + "," + value + "}"; } } class Cache { private java.util.HashMap> cache = new java.util.HashMap<>(); private long defaultExpireTime; public Cache(long t) { this.defaultExpireTime = t; } public void put(K key, V value) { cache.put(key, new CacheEntry<>(value, defaultExpireTime > 0 ? System.currentTimeMillis() + defaultExpireTime : 0)); } public V get(K key) { CacheEntry entry = cache.get(key); if (entry == null || (entry.expireTime > 0 && System.currentTimeMillis() > entry.expireTime)) return null; return entry.value; } private static class CacheEntry { V value; long expireTime; CacheEntry(V v, long e) { value = v; expireTime = e; } } }