জাভাতে দৈর্ঘ্য 0 দিয়ে আমি কীভাবে একটি স্ট্রিং অ্যারে শুরু করতে পারি?


133

পদ্ধতির জাভা ডক্সটি
String[] java.io.File.list(FilenameFilter filter)
রিটার্নের বিবরণে এটি অন্তর্ভুক্ত করে:

ডিরেক্টরিটি ফাঁকা থাকলে বা ফিল্টার দ্বারা কোনও নাম গৃহীত না হলে অ্যারেটি খালি হবে।

আমি কীভাবে অনুরূপ কাজ করব এবং একটি দৈর্ঘ্য 0 পাওয়ার জন্য একটি স্ট্রিং অ্যারে (বা অন্য কোনও অ্যারে) সূচনা করব?


7
আমি কেবল বুঝতে পারি এটি একটি মূ question় প্রশ্ন :( এই অ্যারেগুলি ঠিক আকারের সাথে অন্য কোনও অ্যারের মতোই সূচনা করা হয়েছে 0. আজকাল আমি কতবার অ্যারে আরম্ভ করি তা দেখায় I'll আমি প্রশ্নটি ছেড়ে দেব (কোনও দিন এটি মুছবে না) কারণ কোনও দিন আমি এখন যেমন ছিলাম তেমন অন্য কেউ হয়ত বোকা হতে পারে :)
রন টফিন

1
0 টি দৈর্ঘ্যের অ্যারের জন্য আপনার কী ব্যবহারের ক্ষেত্রে থাকবে তা সম্পর্কে আমি বিভ্রান্ত এবং কেন আপনি কেবল nullসেই বিশেষ ক্ষেত্রে স্নিগ্ধ হন না।
ব্লেক

উত্তর:


230

অন্যরা যেমন বলেছে,

new String[0]

সত্যিই একটি খালি অ্যারে তৈরি করবে। তবে অ্যারে সম্পর্কে একটি দুর্দান্ত জিনিস রয়েছে - তাদের আকার পরিবর্তন করতে পারে না, তাই আপনি সর্বদা একই ফাঁকা অ্যারের উল্লেখ ব্যবহার করতে পারেন। সুতরাং আপনার কোডে, আপনি ব্যবহার করতে পারেন:

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

এবং তারপরে EMPTY_ARRAYপ্রতিবার যখন প্রয়োজন তখন কেবল ফিরে আসুন - প্রতিবার একটি নতুন অবজেক্ট তৈরি করার দরকার নেই।


7
দেখে মনে হচ্ছে যে সকলেই টাইপিং পছন্দ করে:private static final String[] EMPTY_ARRAY = {};
থমাস জং

8
@ থমাস: আমি আপনার বক্তব্য গ্রহণ করি, তবে এই বিশেষ ক্ষেত্রে আমি আরও স্পষ্ট রূপটি পছন্দ করি। এটি আমার কাছে আরও স্পষ্ট যে এর অর্থ "আমি 0 উপাদানগুলির সাথে একটি স্ট্রিং অ্যারে চাই" এর চেয়ে "আমি এই সামগ্রীর সাথে একটি অ্যারে চাই - যা খালি" is আমার ধারণা কেবল ব্যক্তিগত পছন্দ।
জন স্কিটি

1
@ টনি - আমার কয়েকটি জায়গাগুলি ব্যবহার করতে হবে যেখানে জাভা কোনও প্রকার নির্ধারণ করতে পারে। :-)
থমাস জং

1
@ ডেলিভ: আমি যে উদাহরণ সরবরাহ করেছি তা এখনও একটি শূন্য অ্যারে তৈরি করবে, তবে এটি খালি হওয়ায় আপনি ব্যবহার করতে পারবেন না EMPTY_ARRAY[0]- এটি 0 এলিমেন্টটি অ্যাক্সেস করার চেষ্টা করছে যা অস্তিত্বহীন ...
জন স্কিটে

1
@ থিয়েভ: অবশেষে এটা কিছু যায় আসে না। আপনার যদি কেবলমাত্র এটির প্রয়োজন হয় তবে এটি class শ্রেণিতে ঘোষণা করুন। আপনি যদি আরও বেশি জায়গায় এটির প্রয়োজন দেখেন তবে আপনি সর্বদা এটি "ইউটিলিটি" শ্রেণিতে স্থানান্তর করতে পারেন।
জন স্কিটি


18
String[] str = {};

কিন্তু

return {};

টাইপ তথ্যটি অনুপস্থিত থাকায় কাজ করবে না।


10
return new String[] { };এবং return new String[0];উভয় কাজ করবে।
বোম্বে

13

ঠিক আছে আমি আসলে উত্তরটি পেয়েছি তবে ভেবেছিলাম যেভাবেই আমি প্রশ্নটি 'আমদানি' করব

String[] files = new String[0];
অথবা
int[] files = new int[0];


আপনার প্রশ্নের মধ্যে এই জাতীয় মন্তব্য যুক্ত করুন ... বা একই জিনিস বলেছে উত্তরগুলির মধ্যে একটি নির্বাচন করুন।
জোনাথন লেফলার 8

6
জনাথন মন্তব্য করার জন্য ধন্যবাদ। আপনি লক্ষ্য করে থাকতে পারেন যে আমি এই উত্তরটি অন্য কারও সামনে পোস্ট করেছি (এবং যেমন নির্বাচনের কোনও উত্তর নেই)। প্রশ্নের উত্তর যুক্ত করা কীভাবে আরও ভাল প্রশ্নের জন্য তৈরি করে তাও আমি দেখতে পাই না।
রন টফিন

2

আপনি org.apache.commons.lang3 থেকে অ্যারে ইউটিলস। EMPTY_STRING_ARRAY ব্যবহার করতে পারেন

import org.apache.commons.lang3.ArrayUtils;

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

0

এমন একটি ফাংশন তৈরি করুন যা শূন্য ফিরে না আসার পরিবর্তে খালি অ্যারেটি ফেরত দেবে যা আপনি বুঝতে নীচের কোডটি দিয়ে যেতে পারেন।

    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;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.