質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

5864閲覧

JavaのreplaceAllメソッドについて

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/08/09 00:57

JavaのreplaceAll(String s1, String s2)メソッドについて質問です。

このメソッドは引数を二つとって、引数の最初の文字列は置き換えられる部分を、次の文字列は置き換える文字を指しているわけですが、次のコードではインスタンスを受け取っているのです。

public static void main(String[] args) { List<String> strs = Arrays.asList("a", "b", "c"); System.out.println(strs.toString()); strs.replaceAll(new Hoge()); System.out.println(strs.toString()); } } class Hoge implements UnaryOperator<String> { public String apply(String t) { return "{" + t + "}"; }

結果はこのようになりました。

[a, b, c] [{a}, {b}, {c}]

まず、この大かっこ([])は仕様でしょうか。
コレクション変数に対して、toString()メソッドを呼び出すと、デフォルトでこのような記号がついてくる仕様になっているのでしょうか。

また、replaceAllメソッドは引数でインスタンスを受け取っていますが、APIレファレンスを見ましても、このようなことは書いておりません。
一体どういうことなのでしょうか。
回答お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

この replaceAll は String の replaceAll ではなく List の replaceAll です。
List<E> replaceAll(UnaryOperator<E> operator)
List の replaceAll は List の各要素に対し引数で受け取った UnaryOperator (この場合は波かっこをつける)を適用するという処理をします。

また大かっこについてはその通りで List に対し toString() を呼び出すとこのように表示されます。

投稿2016/08/09 01:17

kmasuda

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

JavaのreplaceAll(String s1, String s2)メソッドについて質問です。

と書いてありますが、strs.replaceAll(new Hoge());のstrsはListなので
ListのAPIを見ないといけないのではないでしょうか。
でListのAPIには
default void replaceAll(UnaryOperator<E> operator)
というのがあり、replaceAllで引数にUnaryOperatorをとれますね。
以上で回答になっていますでしょうか。

投稿2016/08/09 01:46

yoichiro

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ArrayListの先祖クラスとしてAbstractCollectionがあって、toString()メソッドはAbstractCollectionのものが使われます。

文字列表現は、コレクションの要素をそのイテレータが返した順に角カッコ("[]")で囲んで示すリストです。隣接する要素は、文字", " (カンマと空白文字)によって区切られます。

また、List.replaceAll(UnaryOperator<E>)はJava 8で増えたメソッドですので、古いリファレンスにはないかもしれません(Oracle)。String.replaceAllとは別系統のメソッドです。

投稿2016/08/09 01:28

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問