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.