📑
今日のコード(1)
Java
ListのforEachは例外発生させれば途中終了出来る
class Main {
public static void main(String args[]) {
var a = new java.util.ArrayList<String>() {{
add("a");
add("b");
add("c");
}};
a.forEach(e -> {
if (e.equals("b")) {
throw new RuntimeException();
}
System.out.println(e);
});
}
}
出力
a
Exception in thread "main" java.lang.RuntimeException
at Main.lambda$main$0(Main.java:10)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at Main.main(Main.java:8)
なお、ラムダ式で Exception
を扱うのは難度が高いので手を出すのは覚悟が必要です
Java 8 Lambda function that throws exception?
Stringをコピーして新しいオブジェクトを得るには
Stringはimmutable(不変)でStack的な場所にあるわけで・・・
class Main {
public static void main(String args[]) {
String a = "a";
String b = new String(a);
String c = a;
b = b.replace("a", "b");
c = c.replace("a", "c");
System.out.println(a +":"+ b +":"+ c);
System.out.println(a.hashCode() +":"+ b.hashCode() +":"+ c.hashCode());
System.out.println(a.intern() +":"+ b.intern() +":"+ c.intern());
}
}
出力
a:b:c
97:98:99
a:b:c
Discussion