【Java8】配列の値をコピー
1次元配列
import java.util.Arrays; public class Main { public static void main(String[] args) { //1次元配列 int[] array1 = new int[10]; for(int i=0; i<10; i++) { array1[i] = i; } int[] array2 = array1.clone(); array2[0] = 20; System.out.println(Arrays.toString(array1)); System.out.println(Arrays.toString(array2)); } }
実行結果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[20, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2次元配列
import java.util.Arrays; public class Main { public static void main(String[] args) { final int N = 2, M = 5; //2次元配列 int[][] array1 = new int[N][M]; for(int i=0; i<N; i++) { for(int j=0; j<M; j++) { array1[i][j] = i+j; } } int[][] array2 = new int[N][M]; for(int i=0; i<N; i++) { array2[i] = array1[i].clone(); } array2[0][0] = 20; System.out.println(Arrays.deepToString(array1)); System.out.println(Arrays.deepToString(array2)); } }
実行結果
[[0, 1, 2, 3, 4], [1, 2, 3, 4, 5]]
[[20, 1, 2, 3, 4], [1, 2, 3, 4, 5]]
【Java8】最大公約数・最小公倍数
ユークリッドの互除法
public class Main { public static void main(String[] args) { //2つの数の最大公約数 long a = 36; long b = 27; long gcd = gcd(a, b); System.out.println(gcd); //2つの数の最小公倍数 long lcm = a * b / gcd; System.out.println(lcm); } static long gcd(long a, long b) { long ans = 0; while(true) { if(a == b) { ans = a; break; } else if(a > b) { long tmp = a-b; a = b; b = tmp; } else if(a < b) { long tmp = b-a; a = a; b = tmp; } } return ans; } }
実行結果
9
108
【Java8】2~Nまでに含まれる素数
エラストテネスの振るい
public class Main { public static void main(String[] args) { //2~N(100)までに含まれる素数 int N = 100; boolean[] prime = new boolean[N+1];//0~Nまで for(int i=2; i<=Math.sqrt(N); i++) { if(!prime[i]) { for(int j=i+i; j<=N; j+=i) { prime[j] = true; } } } for(int i=2; i<=N; i++) { if(!prime[i]) { System.out.print(i + " "); } } } }
実行結果
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
【Java8】配列、コレクションのソート
配列のソート
import java.util.Arrays; import java.util.Comparator; public class Main { public static void main(String[] args) { // 配列のソート Integer[] array = { 10, 3, 15, 2, 1 }; // 昇順 Arrays.sort(array, Comparator.naturalOrder()); System.out.println(Arrays.toString(array)); // 降順 Arrays.sort(array, Comparator.reverseOrder()); System.out.println(Arrays.toString(array)); } }
実行結果
[1, 2, 3, 10, 15]
[15, 10, 3, 2, 1]
コレクションのソート
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Main { public static void main(String[] args) { // コレクションのソート ArrayList<Integer> list = new ArrayList<>(); list.add(10); list.add(3); list.add(15); list.add(2); list.add(1); // 昇順 Collections.sort(list, Comparator.naturalOrder()); System.out.println(list.toString()); // 降順 Collections.sort(list, Comparator.reverseOrder()); System.out.println(list.toString()); } }
実行結果
[1, 2, 3, 10, 15]
[15, 10, 3, 2, 1]