জাভা 8 এ নির্দিষ্ট পরিসর সহ তালিকাতে একটি অ্যারে রূপান্তর করুন

আমি একটি নির্দিষ্ট স্ট্রিং সঙ্গে তালিকাতে এক স্ট্রিং অ্যারে রূপান্তর করতে চান। আমার ক্ষেত্রে আমি সর্বদা সূচী 1 থেকে সর্বশেষ সূচক চান। আমি তালিকা অন্তর্ভুক্ত সূচক 0 মান প্রয়োজন হয় না। আমি প্রয়োজন হিসাবে তালিকা ফিল্টার এবং রূপান্তর করতে ব্যবহার করতে পারেন যে কোন সরাসরি পদ্ধতি আছে?

public class test1 {

    public static void main(String[] args) {
        String[] optArr = {"start", "map1", "map2", "map3"};
        List list = Arrays.stream(optArr).collect(Collectors.toList());
        System.out.println(list);
    }
}
4
পাশাপাশি: যথাযথ নামকরণের সম্মেলনগুলি অনুসরণ করতে আপনার অর্থ/পরিবর্তনগুলি পুনঃনামকরণ করুন এবং অর্থপূর্ণ নামগুলি দিন। উদাহরণস্বরূপ ArrayToistConversionTest একটি ভাল নামও
যোগ লেখক nullpointer, উৎস
ArrayList ক্লাসের একটি আছে সাবলিস্ট পদ্ধতি, যা তালিকাটি টাস্ক করতে ব্যবহার করা যেতে পারে।
যোগ লেখক raviraja, উৎস

7 উত্তর

আপনি ব্যবহার করতে পারেন Stream.skip() :

List list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
5
যোগ
skip এর সাথে একমাত্র চ্যালেঞ্জ বাদ দেওয়ার পরিবর্তে প্রাথমিক উপাদান নির্বাচন করা হবে
যোগ লেখক nullpointer, উৎস
@ নলপয়েন্টার আমি মনে করি আমরা সব নিরাপদে সম্মত হতে পারি যে প্রদত্ত ব্যবহারের ক্ষেত্রে আপনার উত্তরটি সেরা। একটি upvote আছে।
যোগ লেখক Robby Cornelissen, উৎস

You can also use the overloaded method Arrays.stream​(T[] array, int startInclusive, int endExclusive) as :

List list = Arrays.stream(optArr, 1, optArr.length)
                          .collect(Collectors.toList());

নির্দিষ্ট নির্দিষ্ট বিন্যাসের সাথে একটি ক্রমিক স্ট্রিম প্রদান করে   অ্যারের উৎস হিসাবে


বিকল্পভাবে (অ জাভা -8), সাবলিস্ট ব্যবহার করে একটি বিকল্প, তবে আমি একটি নতুন বস্তু তৈরি করার পরিবর্তে এক লাইনে এটি ক্রেন করতে চাই:

List list = Arrays.asList(optArr).subList(1, optArr.length);
4
যোগ

একটি অ জাভা 8 বিকল্পটি শুধুমাত্র আপনার বর্তমান তালিকাটির উপরে একটি দৃশ্য তৈরি করতে পারে যা প্রথম উপাদানকে বাদ দেয়:

List list = Arrays.stream(optArr).collect(Collectors.toList());
List viewList = list.subList(1, list.size());

এর অর্থ হ'ল অন্তর্নিহিত তথ্য গঠনটি এখনও মূল তালিকায় রয়েছে তবে মেমরির একটি অতিরিক্ত উপাদানটি একটি বড় শাস্তি হিসাবে মনে হচ্ছে না।

1
যোগ
ইনপুট একটি অ্যারের একটি তালিকা নয়
যোগ লেখক nullpointer, উৎস
কোডের প্রথম লাইনের সাথে সমাধানটি অ জাভা 8 .. থাকে না। :) আমার উত্তরে এটির জন্য একটি ঝাপসা তৈরি করুন।
যোগ লেখক nullpointer, উৎস
@ নলপয়েন্টার উম ... আমি শুধু মূল প্রবাহটি চালানোর পরামর্শ দিচ্ছি, এবং তারপর এটি দেখতে চাইলেও দেখুন।
যোগ লেখক Tim Biegeleisen, উৎস

আপনার ডেটা খুঁজছেন আপনি বিবেচনা করতে পারেন:

List list = Stream.of(optArr).filter(s -> s.startsWith("map")).collect(toList());

কিন্তু যদি আপনি প্রথম সূচীটিকে sublist ফিল্টার করতে চান তবে ফিল্টার করতে চান। আপনি যাই হোক না কেন আপনি স্ট্রিম ব্যবহার করতে হবে না।

0
যোগ
কন্টেন্ট ভিত্তিক না, কিন্তু সূচক ভিত্তিক
যোগ লেখক nullpointer, উৎস

এটা এই মত হওয়া উচিত।

List al = new ArrayList<>(Arrays.asList(optArr));
List actualList = list.subList(1, al.size());
0
যোগ

One method use List.sublist(int,int)

List list = Arrays.asList(optArr).subList(1,optArr.length);
System.out.println(list);

Second method use Stream

List list = Arrays.stream(optArr)
    .skip(1)
    .collect(Collectors.toList());
System.out.println(list);
0
যোগ
List list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());

আমি এটা কাজ করতে হবে মনে হয়।

See docs here : https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html

0
যোগ