<Java>日付間の日数、週数を取得

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class Main {
    public static void main(String[] args) {
        var date1 = LocalDate.of(1992, 1, 1);
        var date2 = LocalDate.of(2021, 1, 7);
        
        var days = ChronoUnit.DAYS.between(date1, date2);
        System.out.println(days);
        
        var weeks = ChronoUnit.WEEKS.between(date1, date2);
        System.out.println(weeks);
    }
}
10599
1514

<Java>int[]を降順にソート

import java.util.*;

public class Main {
    public static void main(String[] args) {
        
        var numbers = new int[]{ 6, 1, 2, 5, 4, 8, 7, 3, 9 };
        System.out.println(Arrays.toString(numbers));

        numbers = Arrays.stream(numbers)
                        .boxed()
                        .sorted((n, m) -> m - n)
                        .mapToInt(Integer::intValue)
                        .toArray();
        System.out.println(Arrays.toString(numbers));
    }
}
[6, 1, 2, 5, 4, 8, 7, 3, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1]

<Java>順位をつける

import java.util.*;

public class Sample {
    public static void main(String[] args) throws Exception {
        
        var numbers = new int[]{ 1, 1, 2, 3, 3, 3, 4, 5, 6 };
        var ranking = new int[numbers.length];
        
        var rank = 1;
        ranking[0] = rank;
        var prev = numbers[0];
        
        for(var i = 1; i < numbers.length; i++) {
            if(numbers[i] != prev) {
                rank = i + 1;
            }
            ranking[i] = rank;
            prev = numbers[i];
        }
        
        System.out.println(Arrays.toString(numbers));
        System.out.println(Arrays.toString(ranking));
    }
}
[1, 1, 2, 3, 3, 3, 4, 5, 6]
[1, 1, 3, 4, 4, 4, 7, 8, 9]

<Java>和暦で日付を表示

import java.util.Scanner;
import java.util.Locale;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.chrono.JapaneseDate;
import java.time.chrono.JapaneseChronology;

public class Main {
    public static void main(String[] args) {
        
        var locale = new Locale("ja", "JP");
        
        var date      = JapaneseDate.now();
        var formatter = DateTimeFormatter
                            .ofPattern("GGGGy年M月d日", locale);
        var text      = formatter.format(date);
        
        System.out.println(text);
        
        var date2      = LocalDate.now();
        var formatter2 = DateTimeFormatter
                            .ofPattern("GGGGy年M月d日", locale)
                            .withChronology(
                                JapaneseChronology.INSTANCE);
        var text2      = formatter2.format(date2);
        
        System.out.println(text2);
    }
}
令和2年10月12日
令和2年10月12日

<Java>順列を生成する

import java.util.*;

public class Sample {
    public static void main(String[] args) {
        
        var list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        
        var perm = Permutation.generate(list);
        perm.forEach(System.out::println);
    }
}

class Permutation {
    public static <T> List<List<T>> generate(List<T> list) {
        
        var srcList = new ArrayList<List<T>>();
        srcList.add(list);
        var dstList = new ArrayList<List<T>>();
        dstList.add(new ArrayList<T>());
        
        while(srcList.size() > 0) {
            var src = srcList.remove(0);
            var dst = dstList.remove(0);
            
            for(var i = 0; i < src.size(); i++) {
                if(src.size() > 1) {
                    var s = new ArrayList<>(src.subList(0, i));
                    s.addAll(src.subList(i + 1, src.size()));
                    srcList.add(s);
                }
                var d = new ArrayList<>(dst);
                d.add(src.get(i));
                dstList.add(d);
            }
        }
        return dstList;
    }
}
[1, 2, 3, 4]
[1, 2, 4, 3]
[1, 3, 2, 4]
[1, 3, 4, 2]
[1, 4, 2, 3]
[1, 4, 3, 2]
[2, 1, 3, 4]
[2, 1, 4, 3]
[2, 3, 1, 4]
[2, 3, 4, 1]
[2, 4, 1, 3]
[2, 4, 3, 1]
[3, 1, 2, 4]
[3, 1, 4, 2]
[3, 2, 1, 4]
[3, 2, 4, 1]
[3, 4, 1, 2]
[3, 4, 2, 1]
[4, 1, 2, 3]
[4, 1, 3, 2]
[4, 2, 1, 3]
[4, 2, 3, 1]
[4, 3, 1, 2]
[4, 3, 2, 1]

<Java>組み合わせを作る

import java.util.*;

public class Sample {
    public static void main(String[] args) {
        var list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        var empty = new ArrayList<Integer>();
        var result = new ArrayList<List<Integer>>();
        for(var i = 1; i <= list.size(); i++)
            generateCombination(list, empty, i, result);
        for(var r : result)
            System.out.println(r);
    }
    static void generateCombination(List<Integer> src,
                                    List<Integer> dest,
                                    int n,
                                    List<List<Integer>> result) {
        if(n == 0) result.add(dest);
        else {
            for(var i = 0; i < src.size(); i++) {
                var d = new ArrayList<>(dest);
                d.add(src.get(i));
                var s = src.subList(i + 1, src.size());
                generateCombination(s, d, n - 1, result);
            }
        }
    }
}
[1]
[2]
[3]
[4]
[1, 2]
[1, 3]
[1, 4]
[2, 3]
[2, 4]
[3, 4]
[1, 2, 3]
[1, 2, 4]
[1, 3, 4]
[2, 3, 4]
[1, 2, 3, 4]

<Java>Streamで文字列を編集

public class Sample {
    public static void main(String[] args) {
        var string = "123";
        var result = string.chars()
                            .map(c -> c - '1' + 'A')
                            .collect(StringBuilder::new,
                                    (sb, c) -> sb.append((char)c),
                                    StringBuilder::append)
                            .toString();
        System.out.println(result);
    }
}
ABC