একটি স্ট্রিংকে অ্যারেলিস্টে কীভাবে রূপান্তর করবেন?


102

আমার স্ট্রিংয়ে, আমি কমা দ্বারা পৃথককৃত একটি নির্বিচার সংখ্যক শব্দ থাকতে পারি। আমি প্রতিটি শব্দ একটি অ্যারেলিস্টে যুক্ত করতে চেয়েছিলাম। যেমন:

String s = "a,b,c,d,e,.........";

উত্তর:


255

এরকম কিছু চেষ্টা করুন

List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));

ডেমো:

String s = "lorem,ipsum,dolor,sit,amet";

List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));

System.out.println(myList);  // prints [lorem, ipsum, dolor, sit, amet]

এই পোস্টটি এখানে একটি নিবন্ধ হিসাবে আবার লেখা হয়েছে


9
+1: new ArrayList<String>()এটি কীভাবে ব্যবহৃত হবে তার উপর নির্ভর করে এটি অতিরিক্ত কাজ হতে পারে। (যেমন এটি আপনার উদাহরণে রয়েছে;)
পিটার লরে

4
হেই, হ্যাঁ, +1 :-) এটি সম্ভবত splitতার পরেও হতে পারে : পি
আইওব

Arrays.toString()এটি মুদ্রণের জন্য তাকে ব্যবহার করতে হবে, তবে হ্যাঁ।
পিটার লরি

নতুন অ্যারেলিস্ট <স্ট্রিং> () এর অভ্যন্তরে ফিরে আসা তালিকা সহ একটি নতুন তালিকা তৈরি করার কারণ ঘটায়। অ্যারে.এএসলিস্ট (ক) কোনও তালিকার অবজেক্টকে ফেরত দেয় যাতে নতুন অ্যারেলিস্টকে কল করবেন না আপনি অযাচিত আচরণ পাবেন।
ক্লোকার

6
দ্রষ্টব্য যে আপনি অ্যারে.এএসলিস্ট দ্বারা ফিরিয়ে দেওয়া তালিকায় উপাদানগুলি যুক্ত করতে পারবেন না। ওপি একটি ArrayList (যা সম্পূর্ণরূপে যুক্তিযুক্ত) থাকতে চেয়েছিলেন এবং ArrayList নির্মাণ হয় প্রয়োজনীয়।
আইয়ুব

33
 String s1="[a,b,c,d]";
 String replace = s1.replace("[","");
 System.out.println(replace);
 String replace1 = replace.replace("]","");
 System.out.println(replace1);
 List<String> myList = new ArrayList<String>(Arrays.asList(replace1.split(",")));
 System.out.println(myList.toString());

10
আপনার যদি বন্ধনী ছাঁটাতে হয়, আপনি এটি দিয়ে এক ধাপে এটি করতে পারেনreplace = s1.replaceAll("^\\[|]$", "");
ডেভিড এহরমান

আমি এই উত্তরটি ব্যবহার করেছি, তবে আমার ব্যবহারকারী কখনও কখনও ","এবং অন্যকে ", "পৃথককারী হিসাবে ব্যবহার করেন , তাই আমি ফাংশনের .replaceAll(", ", ",")আগে একটি যুক্ত করেছি split
IgniteCoders

9

বিকল্প 1 :

List<String> list = Arrays.asList("hello");

বিকল্প 2 :

List<String> list = new ArrayList<String>(Arrays.asList("hello"));

আমার মতে, অপশন 1 কারণ ভাল

  1. আমরা অ্যারেলিস্ট অবজেক্টগুলির সংখ্যা 2 থেকে 1 টি হ্রাস করতে পারি asListmethod পদ্ধতিটি একটি অ্যারেলিস্ট অবজেক্ট তৈরি করে এবং প্রদান করে।
  2. এর কর্মক্ষমতা অনেক ভাল (তবে এটি একটি স্থির আকারের তালিকা দেয়)।

এখানে ডকুমেন্টেশন দেখুন


এই কাজটি কেন হয় না List<Character> word1 = new ArrayList<Character>(Arrays.asList(A[0].toCharArray()));আমি একটি স্ট্রিং অ্যারের প্রথম স্ট্রিং পাওয়ার চেষ্টা করছি এবং সেই স্ট্রিংটিকে চরআরে এবং সেই চরআরে তালিকাতে রূপান্তরিত করবো <
চ্যারেক্টার

এজন্য যে অ্যারে ক্লাসে অ্যাসলিস্ট পদ্ধতিটি কেবল অবজেক্ট অ্যারে নেয়, আদিম অ্যারেগুলিতে নয়। আপনি চর [] কে অক্ষর [] অ্যারে রূপান্তরিত করলে এটি কার্যকর হবে।
অ্যান্ডি

পাবলিক স্ট্যাটিক ক্যারেক্টার [] boxToCharacter (চর [] চরআরে) {চরিত্র [] newArray = নতুন চরিত্র [charArray.length]; int i = 0; (চর মান: চরআরে) {newArray [i++] = চরিত্র.মূল্যঅফ (মান); new নতুন অ্যারে ফিরে আসুন; }
অ্যান্ডি

8

জাভা 9-তে, List#ofযা অপরিবর্তনীয় তালিকা স্ট্যাটিক কারখানার পদ্ধতিগুলি ব্যবহার করে আরও সহজ হয়।

 String s = "a,b,c,d,e,.........";
 List<String> lst = List.of(s.split(","));

s.split("\\s*,\\s*")অতিরিক্ত যত্নের জন্য যুক্ত করা যেতে পারে
বিশ্বজিৎ আর শিন্ডে

3

ঠিক আছে আমি এখানে উত্তরগুলি প্রসারিত করব যেহেতু এখানে আসা অনেক লোকই একটি সাদা স্থানের মাধ্যমে স্ট্রিংটি বিভক্ত করতে চায় । এই তার কাজ হল কিভাবে:

List<String> List = new ArrayList<String>(Arrays.asList(s.split("\\s+")));

2

আপনি যদি আমদানি করছেন বা আপনার কোডে একটি অ্যারে (টাইপ স্ট্রিং) থাকে এবং আপনাকে এটিকে অ্যারেলিস্টে (অফকোর্স স্ট্রিং) রূপান্তর করতে হয় তবে সংগ্রহগুলির ব্যবহার আরও ভাল। এটার মত:

String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then

List allEds = new ArrayList(); Collections.addAll(allEds, array1);

2

আপনি ব্যবহার করতে পারেন:

List<String> tokens = Arrays.stream(s.split("\\s+")).collect(Collectors.toList());

আপনার নিজের জিজ্ঞাসা করা উচিত যদি আপনার সত্যিকার অর্থে প্রথম স্থানে অ্যারেলিস্ট প্রয়োজন হয়। খুব প্রায়ই, আপনি অতিরিক্ত মানদণ্ডের উপর ভিত্তি করে তালিকাটি ফিল্টার করতে যাচ্ছেন, যার জন্য একটি স্ট্রিম নিখুঁত। আপনি একটি সেট করতে পারেন; আপনি অন্য রেগুলার এক্সপ্রেশন, ইত্যাদি জাভা 8 এই খুব দরকারী এক্সটেনশন উপলব্ধ মাধ্যমে তাদের ফিল্টার করতে, যেভাবে, যা কোনো কাজ করবে দ্বারা চাইতে পারেন CharSequence: https://docs.oracle.com/javase/8/docs/api / জাভা / ইউটিলি / রেজেক্স / প্যাটার্ন এইচটিএমএল# স্প্লিটএস্ট্রিম- জাভা.লং.চ্যারসেকেন্স- । যেহেতু আপনার অ্যারে মোটেই প্রয়োজন নেই তাই এটি তৈরি করা এড়িয়ে চলুন:

// This will presumably be a static final field somewhere.
Pattern splitter = Pattern.compile("\\s+");
// ...
String untokenized = reader.readLine();
Stream<String> tokens = splitter.splitAsStream(untokenized);

1

রুপান্তর করতে চান তা যদি একটি স্ট্রিং একটি মধ্যে ArrayList এই চেষ্টা:

public ArrayList<Character> convertStringToArraylist(String str) {
    ArrayList<Character> charList = new ArrayList<Character>();      
    for(int i = 0; i<str.length();i++){
        charList.add(str.charAt(i));
    }
    return charList;
}

কিন্তু আমি তোমার উদাহরণে একটি স্ট্রিং অ্যারে দেখতে, তাই আপনি যদি একটি রূপান্তর করতে চেয়েছিলেন স্ট্রিং অ্যারের মধ্যে ArrayList এই ব্যবহার করুন:

public static ArrayList<String> convertStringArrayToArraylist(String[] strArr){
    ArrayList<String> stringList = new ArrayList<String>();
    for (String s : strArr) {
        stringList.add(s);
    }
    return stringList;
}

একটি সহজ চরিত্রভিত্তিক পদ্ধতি হ'ল: অ্যারেলিস্ট <স্ট্রিং> মাইলিস্ট = নতুন অ্যারেলিস্ট <স্ট্রিং> (); (চরিত্র সি: s.toCharArray ()) {myList.add (c.toString ()) এর জন্য; } তবে আমি মনে করি না যে ব্যক্তি এটি যা খুঁজছে। আইওউব দ্বারা সমাধানটি যা প্রয়োজন তা। চিয়ার্স
স্টিভ



0

আসুন একটি প্রশ্ন নেওয়া যাক: বিপরীত একটি স্ট্রিং। আমি স্ট্রিম () সংগ্রহ () সংগ্রহ করে এটি করব। তবে প্রথমে আমি স্ট্রিংটিকে একটি অ্যারেলিস্টে পরিবর্তন করব।

    public class StringReverse1 {
    public static void main(String[] args) {

        String a = "Gini Gina  Proti";

        List<String> list = new ArrayList<String>(Arrays.asList(a.split("")));

        list.stream()
        .collect(Collectors.toCollection( LinkedList :: new ))
        .descendingIterator()
        .forEachRemaining(System.out::println);



    }}
/*
The output :
i
t
o
r
P


a
n
i
G

i
n
i
G
*/

4
সুতরাং ... আপনি কোনও ভিন্ন সমস্যা সম্পর্কে উদাহরণ তৈরি করার জন্য গৃহীত সমাধানটি ব্যবহার করছেন? কেন?
ফ্রান্সেস্কো বি।

0

আমি স্ট্রিংটোকেনাইজার ব্যবহার করার পরামর্শ দিচ্ছি, এটি অত্যন্ত দক্ষ

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

     StringTokenizer token = new StringTokenizer(value, LIST_SEPARATOR);
     while (token.hasMoreTokens()) {
           list.add(token.nextToken());
     }

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