📑

今日のコード(1)

2023/02/20に公開約1,300字

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

https://stackoverflow.com/questions/10607990/how-should-i-copy-strings-in-java

Discussion

ログインするとコメントできます