web-dev-qa-db-ja.com

Javaで長さ0の文字列配列を初期化するにはどうすればよいですか?

メソッドのJavaドキュメント
String[] Java.io.File.list(FilenameFilter filter)
これを返品の説明に含めます。

ディレクトリが空の場合、またはフィルターによって名前が受け入れられなかった場合、配列は空になります。

同様のことを行い、長さ0を持つようにString配列(または他の配列)を初期化するにはどうすればよいですか?

121
Ron Tuffin

他の人が言ったように、

new String[0]

実際に空の配列を作成します。ただし、配列には良い点が1つあります。配列のサイズは変更できないため、常に同じ空の配列参照を使用できます。したがって、コードでは次を使用できます。

private static final String[] EMPTY_ARRAY = new String[0];

そして、必要なたびにEMPTY_ARRAYを返すだけです。毎回新しいオブジェクトを作成する必要はありません。

205
Jon Skeet

String[] str = new String[0];

21
mauris
String[] str = {};

しかし

return {};

型情報が欠落しているため機能しません。

16
Thomas Jung

[OK]を私は実際に答えを見つけたが、とにかくSOに質問を「インポート」すると思った

String[] files = new String[0];
または
int[] files = new int[0];

11
Ron Tuffin

Org.Apache.commons.lang3からArrayUtils.EMPTY_STRING_ARRAYを使用できます

import org.Apache.commons.lang3.ArrayUtils;

    class Scratch {
        public static void main(String[] args) {
            String[] strings = ArrayUtils.EMPTY_STRING_ARRAY;
        }
    }
1
freak0

あなたがしなければならないのは

String str = "";
String[] newString = new String[str.length()];

これにより、空の文字列配列が得られます。

ビデオから

どうもありがとう!この答えは、文字列が空であり、どのように機能するかを示すため、依然として重要です。たとえば、整数0は整数であるため、int配列のサイズを変更したり、別のサイズに変更したりすることはできません。 ArrayIndexOutOfBoundsExceptionエラーが発生します。 Stringとintには違いがあるはずです。ただし、Stringには二重引用符が含まれており、サイズを変更できます。もちろん、もっと長い道のりです。 intと主にStringの間の推論をまだ示しています。

0
ashkanaral

Nullを返さない関数を作成し、代わりに空の配列を返します。理解するには、以下のコードを参照してください。

    public static String[] getJavaFileNameList(File inputDir) {
    String[] files = inputDir.list(new FilenameFilter() {
        @Override
        public boolean accept(File current, String name) {
            return new File(current, name).isFile() && (name.endsWith("Java"));
        }
    });

    return files == null ? new String[0] : files;
}
0