7

これはStackoverflowに関する私の最初の質問です。最初の投稿で無意味なものを見つけた場合は、ご容赦ください。参考までに、私はSO FAQを確認し、そのさまざまなポリシーを認識しています。ほら、私はPHP、Perl、Python、RORなどの言語を多用してきましたが、最近はJavaEEに「コンテキストスイッチ」しました。ご覧のとおり、私が取り組んできたいくつかの言語には、for / foreach/for..inループなしで集約構造の内容を再帰的にダンプできる構造がありました。

例えば、

a=任意の複合データ構造

PHPには

var_dump()およびprint_r()

Perlには

データ::ダンパー

RORは

PrettyPrint

そしてPythonは

pprintモジュール

だから私の質問は行きます、

Javaユニバースにこれらのいずれかに相当するものはありますか?これらの言語(PHP / Perl / Python / ROR)のいずれかで作業していたときに、複合データ構造のコンテンツをダンプして外観を調べ、さらに処理する(または方法を決定する)と非常に便利です。さらに処理する)

私の投稿がSO規則を見落としている場合は、お時間を割いてお詫び申し上げます。

4

3 に答える 3

1

java.utilコレクションにtoString()は、リスト/セット/マップなどの詳細を再帰的にダンプする機能があります。これには、コレクションに格納されているオブジェクトに有用なが定義されている必要がありますtoString()

ただし、Javaには配列の便利なデフォルトがないため、配列に分類されますtoString()。配列を扱っていることがわかっている場合は、Arrays.deepToString()ユーティリティメソッドを使用できます(詳細については、 guidoの応答を参照してください)。

たとえば、次のコードは次のとおりです。

final Map<String, Object> map = new HashMap<String, Object>();
final List<String> nested = Arrays.asList("foo", "bar", "baz");

map.put("given", "Arthur");
map.put("family", "Dent");
map.put("nested", nested);

System.out.println(map);

これを生成します:

{nested=[foo, bar, baz], given=Arthur, family=Dent}
于 2012-06-14T05:37:41.287 に答える
0

java.util.Arraysクラスにあるユーティリティ静的メソッドを使用できます。

public static String toString(Object[] a)
ie: String dump = Arrays.toString(array);

指定された配列の内容の文字列表現を返します。

配列に要素として他の配列が含まれている場合、それらはObjectから継承されたObject.toString()メソッドによって文字列に変換されます。このメソッドは、内容ではなくIDを記述します。

このメソッドによって返される値は、aがnullでない限り、Arrays.asList(a).toString()によって返される値と同じです。nullの場合、「null」が返されます。

public static String deepToString(Object[] a)
ie: String dump = Arrays.deepToString(array);

指定された配列の「詳細コンテンツ」の文字列表現を返します。配列に要素として他の配列が含まれている場合、文字列表現にはその内容などが含まれます。このメソッドは、多次元配列を文字列に変換するために設計されています。

文字列表現は、角かっこ( "[]")で囲まれた配列の要素のリストで構成されます。隣接する要素は、文字「、」(コンマの後にスペースが続く)で区切られます。要素自体が配列でない限り、要素はString.valueOf(Object)によって文字列に変換されます。

コレクションの場合は、メソッドtoArray()を使用できます。

 List<YourObject> list = .....
 YourObject[] array = list.toArray(new YourObject[0]);
 String dump = Arrays.deepToString(array);
于 2012-06-14T05:36:26.083 に答える
0

コードをデバッグしたり、複雑なデータ構造を調べたりする目的に応じて、を印刷しないでください。

IntelliJや(震え、しないでください)eclipseなどの優れたUIデバッガーを使用してください。Javaには、リストした他の言語と比較して、開発者が利用できるはるかに成熟した完全なツールのセットがあります(私はそれらのほとんどで作業しました)。PHP、Perlなどは原始的であり、何らかの理由で人々は単純なテキストエディタでの開発を期待し続けています。Javaはそのようには機能しません(少なくとも、正気を保ちたい場合や、おもちゃのプロジェクトよりも大きなものに取り組んでいる場合はそうではありません)。

フル機能のIDEを使用すると、デバッガーが組み込まれています。

あなたがリストした他のものでは、IDEにあまり良いオプションはなく、デバッグ統合はせいぜい貧弱です...これは実際のJavaの主な利点の1つです。

于 2014-03-10T16:02:13.117 に答える