diff --git a/src/Bins.java b/src/Bins.java index b313a3d..060f79e 100644 --- a/src/Bins.java +++ b/src/Bins.java @@ -1,10 +1,10 @@ -import java.io.File; -import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.PriorityQueue; import java.util.Scanner; +import java.util.function.Function; +import java.util.stream.Collectors; /** * Runs a number of algorithms that try to fit files onto disks. @@ -26,13 +26,18 @@ public List readData (Scanner input) { return results; } + private static void fitDisksAndPrint(Function, List> func, List data ) { + List newList = func.apply(data); + newList.forEach(System.out::println); + } + /** * The main program. */ public static void main (String args[]) { Bins b = new Bins(); - Scanner input = new Scanner(Bins.class.getClassLoader().getResourceAsStream(DATA_FILE)); - List data = b.readData(input); + Scanner in = new Scanner(Bins.class.getClassLoader().getResourceAsStream(DATA_FILE)); + List data = b.readData(in); PriorityQueue pq = new PriorityQueue(); pq.add(new Disk(0)); @@ -63,7 +68,7 @@ public static void main (String args[]) { } System.out.println(); - Collections.sort(data, Collections.reverseOrder()); + fitDisksAndPrint((input) -> input.stream().sorted().collect(Collectors.toList()), data); pq.add(new Disk(0)); diskId = 1; diff --git a/src/Disk.java b/src/Disk.java index e3a3f31..b76a27a 100644 --- a/src/Disk.java +++ b/src/Disk.java @@ -1,5 +1,6 @@ import java.util.ArrayList; import java.util.List; +import java.util.function.Function; /** * Represents a collection of files; how many it can hold is limited by its capacity. @@ -103,4 +104,5 @@ public int compareTo (Disk other) { return -1; } } + }