その他
compareとcompareToの違い
compare
- パッケージはjava.util.Comparator
- ラムダ式やstream.sorted()で使う。
実装例
public class Main {
public static void main(String[] args) {
int num1 = 1;
int num2 = 2;
System.out.println(Integer.compare(num1, num2));
}
}
compareTo
- パッケージはjava.lang.Comparable
- Arrays.sort(Object[]), Collections.sort(List)で使う。
実装例
public class Main {
public static void main(String[] args) {
String str1 = "a";
String str2 = "b";
System.out.println(str1.compareTo(str2));
}
}
ListとSetの違い
List
- 要素の重複を許す。
Set
- 要素の重複を許さない。
抽象クラスとインタフェースの違い
抽象クラス
- インスタンスフィールドを定義できる。
- protectedなメソッド定義可。
- privateなメソッド定義可。
インタフェース
- インスタンスフィールドを定義できない。
- protectedなメソッド定義不可。
- public、private、staticなメソッド、抽象メソッド、デフォルトメソッドは定義可。
- finalで修飾されたオーバーライドできないメソッドは定義できない。
Listについて
- java.util.Listインタフェースに定義されている、List型のインスタンスをへの参照を戻すstaticメソッドは、すべて「変更不可能なリスト」を生成している。
実装例
List<Integer> a = new ArrayList<>();
a.add(1);
List b = List.copyOf(a);
b.add(2);
実行結果
実行時に例外がスローされる
オートボクシングについて
プリミテイブ型からラッパークラスへ変換。
プリミティブデータ型
boolean, char, byte, short, int, long, float, doubleの8つ
ラッパークラス
Boolean, Character, Byte, Short, Integer, Long, Float, Double
replaceAll(UnaryOperator operator)
実装メソッド内の引数としてList内の要素を一つずつ受け取り、戻り値で上書き。
- Listの全ての要素に文字列を追加したい。
- Listの全ての要素の値を二倍にしたい
こういったリスト内の全ての要素の値を変更したい場合はreplaceAllメソッドを利用。
実装例
public class Main {
public static void main(String[] args) {
List<Integer> List = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
List.replaceAll(i -> i * 2 );
System.out.println(List);
}
}
実行結果
2, 4, 6, 8, 10, 12, 14, 16, 18, 20
java.lang.System
in
- 標準入力を扱うInputStream型のstaticなフィールド。
- System.inは、標準入力ストリームである。このストリームは常に開いている。
out
PrintStream型のstaticなフィールド。
setIn
ストリームを置き換えることができる