import java.util.ArrayList;
import java.util.Arrays;
import java.util.PriorityQueue;

public class HeapUtils {
	
	public static int[] getLargestKElements(int[] list, int k) {
		PriorityQueue<Integer> q = new PriorityQueue<>((Integer x, Integer y)->x-y);
		for (int i=0; i<k; i++) {
			q.add(list[i]);
			System.out.println(q);  //Debug
		}
		for (int i=k; i<list.length; i++) {
			if (list[i]>q.peek()) {
				q.poll();
				q.add(list[i]);
				System.out.println(q);  //Debug
			}
		}
		return q.stream().mapToInt(i->i).toArray();
	}
	
	public static void main(String[] args) {
		int[] test = {5,9,1,6,12,8,2,7,4,11,3,10};
		System.out.println("Feld: "+Arrays.toString(test));
		System.out.println("Ergebnis: "+Arrays.toString(getLargestKElements(test, 3)));
	}
	
}
