java howto অ্যারেলিস্ট পুশ, পপ, শিফট এবং আনশিফ্ট


89

আমি স্থির করেছি যে জাভা ArrayList.addকোনও জাভাস্ক্রিপ্টের মতোArray.push

আমি ArrayListনিম্নলিখিত অনুরূপ ফাংশন সন্ধান আটকে আছি

  • Array.pop
  • Array.shift
  • Array.unshift আমি ঝুঁকছি ArrayList.remove[At]

উত্তর:


145

ArrayListনামকরণের মানগুলির মধ্যে এটি অনন্য। এখানে সমতা:

Array.push    -> ArrayList.add(Object o); // Append the list
Array.pop     -> ArrayList.remove(int index); // Remove list[index]
Array.shift   -> ArrayList.remove(0); // Remove first element
Array.unshift -> ArrayList.add(int index, Object o); // Prepend the list

লক্ষ্য করুন unshiftনেই অপসারণ একটি উপাদান, কিন্তু এর পরিবর্তে যোগ লিস্টে এক। এছাড়াও নোট করুন যে কর্নার-কেস আচরণগুলি জাভা এবং জেএস এর মধ্যে পৃথক হতে পারে, যেহেতু তাদের প্রত্যেকটির নিজস্ব মান রয়েছে।


9
যদি আপনি প্রচুর "আনশিফিং" করে থাকেন তবে মাঝারি সূচকগুলিতে খুব বেশি কিছু না পেয়ে থাকেন তবে আপনি অ্যারেলিস্টকে আসল রান টাইমের ক্ষেত্রে লিঙ্কডলিস্টের থেকে নিকৃষ্ট বলে মনে করতে পারেন।
— প্যাট্রিক

যখন (আইটেম আইটেম = আইটেমগুলি সরান (0)) {... sh শিফটের সমতুল্য নয়।
— ই তথ্য 128

কি হবে .push?
— জামেশফিশার 5:58

4
ওপি সে জানত বলেন Array.push -> ArrayList.add, এবং বিশেষভাবে সম্পর্কে জিজ্ঞাসা pop, shiftএবং unshift। এটি আবার পড়া, আমি .pushএকই সাথে আরও ব্যাখ্যা এবং যুক্ত করতে যাচ্ছি ।
— জন ইজল্যান্ড

যদিও এটি জিজ্ঞাসা করা হয়নি, এই ক্রিয়াকলাপগুলির জটিলতার কোনও উল্লেখ ছাড়াই এই উত্তরটি অসম্পূর্ণ বোধ করে।
— জেস্পার

25

কিছুক্ষন আগে আমি এই সমস্যার মুখোমুখি হয়েছি এবং আমি java.util.LinkedListআমার মামলার পক্ষে সেরা is বিভিন্ন নামকরণ সহ এটির বেশ কয়েকটি পদ্ধতি রয়েছে তবে তারা যা প্রয়োজন তা করছে:

push()    -> LinkedList.addLast(); // Or just LinkedList.add();
pop()     -> LinkedList.pollLast();
shift()   -> LinkedList.pollFirst();
unshift() -> LinkedList.addFirst();

4
কেন এটি গৃহীত হয় না ?! দ্রষ্টব্য: ইন্টারফেসে LinkeListএমন পদ্ধতিগুলি যুক্ত করে যা খুব অদক্ষ হতে পারে , ArrayList এটিই Listআমাকে বিভ্রান্ত করেছিল। এই পদ্ধতি থেকে আসা Dequeএবং Queueইন্টারফেস যার ফলে এটি প্রয়োগ, কিন্তু ArrayListনা।
— সিরো সান্তিলি :19 冠状 病 六四 事件

4
@ CiroSantilli 新疆 改造 中心 六四 事件 法轮功 কিন্তু কতটা অক্ষম?
— স্লাভা

সামনের প্রবেশের জন্য স্লাভা ও (এন) বনাম ও (1), যা বিশাল
— সিরো সান্তিলি 郝海东 冠状 病 六四 事件 法轮功

4
@ সিরোসন্টিলি 新疆 改造 中心 六四 事件 法轮功 ও (এন) এবং ও (1) কেবল জটিলতা। আমি শুনেছি যে লিঙ্কযুক্ত তালিকাগুলি সন্নিবেশ / মোছার জন্য অ্যারে তালিকার তুলনায় বেশ ধীর হতে পারে। stackoverflow.com/questions/34170566/… তাই আমি ভাবছি জাভা সম্পর্কে কী?
— স্লাভা

15

সম্ভবত আপনি একটি java.util.Stackক্লাস নিতে চান । এটি ধাক্কা, পপ পদ্ধতি আছে। এবং কার্যকর তালিকাভুক্ত ইন্টারফেস।

শিফট / আনশিফ্টের জন্য, আপনি @ জনের উত্তরটি উল্লেখ করতে পারেন।

তবে ArrayList কিছু আপনার পছন্দের চাইতে পারেন, arrayList হয় না সিঙ্ক্রোনাইজ। কিন্তু স্ট্যাক হয়। (ভেক্টরের উপ-শ্রেণি)। আপনার যদি থ্রেড-নিরাপদ প্রয়োজনীয়তা থাকে তবে অ্যারেলিস্টের চেয়ে স্ট্যাক ভাল better



আমার খারাপ, আমি ঠিক বুঝতে পেরেছিলাম যে আমার ঘুম বঞ্চিত অবস্থায় আমি শেষার্ধটি পড়িনি।
— এমজে রায়বার্ন

3

জনের দুর্দান্ত উত্তর ।

যদিও আমি অলস এবং আমি টাইপিংকে ঘৃণা করি, তাই আমি আমার মতো অন্যান্য সমস্ত লোকের জন্য একটি সাধারণ কাট এবং পেস্ট উদাহরণ তৈরি করেছি। উপভোগ করুন!

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        List<String> animals = new ArrayList<>();

        animals.add("Lion");
        animals.add("Tiger");
        animals.add("Cat");
        animals.add("Dog");

        System.out.println(animals); // [Lion, Tiger, Cat, Dog]

        // add() -> push(): Add items to the end of an array
        animals.add("Elephant");
        System.out.println(animals);  // [Lion, Tiger, Cat, Dog, Elephant]

        // remove() -> pop(): Remove an item from the end of an array
        animals.remove(animals.size() - 1);
        System.out.println(animals); // [Lion, Tiger, Cat, Dog]

        // add(0,"xyz") -> unshift(): Add items to the beginning of an array
        animals.add(0, "Penguin");
        System.out.println(animals); // [Penguin, Lion, Tiger, Cat, Dog]

        // remove(0) -> shift(): Remove an item from the beginning of an array
        animals.remove(0);
        System.out.println(animals); // [Lion, Tiger, Cat, Dog]

    }

}

2

ইনসকোর-জাভা লাইব্রেরিতে পদ্ধতিগুলি পুশ (মান), পপ (), শিফট () এবং আনশিফ্ট (মান) থাকে।

কোড উদাহরণ:

import com.github.underscore.U:

List<String> strings = Arrays.asList("one", "two", " three");
List<String> newStrings = U.push(strings, "four", "five");
// ["one", " two", "three", " four", "five"]
String newPopString = U.pop(strings).fst();
// " three"
String newShiftString = U.shift(strings).fst();
// "one"
List<String> newUnshiftStrings = U.unshift(strings, "four", "five");
// ["four", " five", "one", " two", "three"]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.