<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