import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) {
        // code, date, maximum, remain
        int[][] data = {
            {1, 20300104, 100, 80},
            {2, 20300804, 847, 37},
            {3, 20300401, 10, 8}};
        String ext = "date";
        int val_ext = 20300501;
        String sort_by = "remain";
        
        int[][] so = solution(data, ext, val_ext, sort_by);
        for (int[] a : so) {
            for (int b : a) {
                System.out.print(b+" ");
            }
            System.out.print("\n");
        }
    }
    
    public static int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
        int dataTag = 0;
        int sortTag = 0;
        Map<Integer, Integer[]> map = new HashMap<>();
        
        switch (ext) {
            case "code":
                dataTag = 0;
                break;
            case "date":
                dataTag = 1;
                break;
            case "maximum":
                dataTag = 2;
                break;
            case "remain":
                dataTag = 3;
                break;
        }
        
        switch (sort_by) {
            case "code":
                sortTag = 0;
                break;
            case "date":
                sortTag = 1;
                break;
            case "maximum":
                sortTag = 2;
                break;
            case "remain":
                sortTag = 3;
                break;
        }
        
        for (int[] dt : data) {
            if(dt[dataTag] < val_ext) {
                //Integer[] integerAR = Arrays.stream(dt).boxed().toArray(Integer[]::new);
                map.put(Integer.valueOf(dt[sortTag]), Arrays.stream(dt).boxed().toArray(Integer[]::new));
            }
        }
        
        //Map<Integer, Integer[]> sortedMap = new TreeMap<>(map);
        int[][] answer = map.entrySet().stream()
            .sorted(Map.Entry.comparingByKey())
            .map(entry -> Arrays.stream(entry.getValue())
                 .mapToInt(Integer::intValue).toArray())
            .toArray(int[][]::new);
        
        return answer;
    }
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: