মান সহ কোটলিনে একটি অ্যারে কীভাবে শুরু করবেন?


261

জাভাতে একটি অ্যারে যেমন শুরু করা যেতে পারে:

int numbers[] = new int[] {10, 20, 30, 40, 50}

কোটলিনের অ্যারে প্রারম্ভিকরণটি কেমন দেখাচ্ছে?


সম্ভবত ডক্সটি
khlr

6
ডকুমেন্টেশন কিছুটা উত্তর লুকিয়ে রাখে। সোর্স কোড উদাহরণ দেওয়ার পরিবর্তে তারা array()পার্শ্ব মন্তব্যে (অবহেলিত) ফাংশন উল্লেখ করে : একটি অ্যারে তৈরি করতে, আমরা একটি লাইব্রেরি ফাংশন অ্যারে () ব্যবহার করতে পারি এবং এতে আইটেমের মানগুলি পাস করতে পারি, যাতে অ্যারে (1, 2, 3) ) একটি অ্যারে তৈরি করে [1, 2, 3]।
লার্স ব্লামবার্গ

8
যদিও আমি কোটলিনকে পছন্দ করি তবে আমি বলেছি "কোটলিন ডকুমেন্টেশন" যথেষ্ট ভাল নয় (আমি কোটলিংলং.অর্গ.এর চেয়ে অন্যান্য সাইট থেকে আরও শিখেছি)।
হাসান তারেক

1
এছাড়াও একসময় আপনি কেবল একটি ইনট্রেঞ্জ চান val numbers = 1..5যা আপনি করতে পারেন: যা 1 থেকে 5 পর্যন্ত কোনও পরিসর দেয়
সিলেহে

উত্তর:


313
val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)

দেখুন প্রাথমিক ধরনের - Kotlin বিস্তারিত জানার জন্য।

আপনি দ্বিতীয় প্যারামিটার হিসাবে একটি ইনিশিয়াল ফাংশন সরবরাহ করতে পারেন:

val numbers = IntArray(5) { 10 * (it + 1) }
// [10, 20, 30, 40, 50]

8
এটি intArrayOfওভার ব্যবহার করা ভাল arrayOf? এভাবে কি IntArrayসুবিধা আছে Array<Int>?
লার্স ব্লামবার্গ

16
@ লার্সবার্বার্গ ইনট্রে সমান সমান [], অ্যারে <আইটেন্ট] সমান সমান []
ইউজার ২৩৩৫69৮

3
একটি তালিকা শুরু করা খুব অনুরূপ:listOf(10, 20, 30, 40, 50)
ক্রিশস্থান

আমি যখন intArrayOf () ফাংশনটি ব্যবহার করছি তখন আমার মুখোমুখি Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/KotlinPackage। আমি ব্যবহার করছি jdk1.8.0_241এবং ইন্টেলিজ আইডিইএ
টিচমেজেভা

92

ওয়ার্থ উল্লেখ যে যখন kotlin builtines ব্যবহার (যেমন intArrayOf(), longArrayOf(), arrayOf(), ইত্যাদি) তুমি কি একটি প্রদত্ত আকার জন্য ডিফল্ট মান সঙ্গে অ্যারে (অথবা পছন্দসই মান সব মান) আরম্ভ করতে সক্ষম আপনাকে কল মাধ্যমে আরম্ভ করতে প্রয়োজন বর্গ কন্সট্রাকটর অনুযায়ী, পরিবর্তে ।

// Array of integers of a size of N
val arr = IntArray(N)

// Array of integers of a size of N initialized with a default value of 2
val arr = IntArray(N) { i -> 2 }

9
ল্যাম্বডা ব্যবহার করে এটি দ্বিতীয় ডিফল্ট মান টিআইপি সুপার সহায়ক ছিল! ধন্যবাদ
rf43

9
আরম্ভের দ্বিতীয় রূপটি এ হিসাবে লেখা যেতে পারে: IntArray(N) {i -> 2}এবং এমনকি (ধ্রুবক দিয়ে শুরু করার সময়)IntArray(N) {2}
ডেভিড সোরোকো

1
I এর পরিবর্তে আমরা "_" var arr = IntArray (N) {_ -> মিথ্যা use
নাভাস পিকে

1
ল্যাম্বডা সহ সেইটি হ'ল ডায়নামিক আকার এবং অ-alচ্ছিক ডিফল্ট মান সহ একটি অ্যারে শুরু করার জন্য আমার ঠিক কী প্রয়োজন। ধন্যবাদ!
মিঠুঙ্ক

48

এখানে একটি উদাহরণ:

fun main(args: Array<String>) {
    val arr = arrayOf(1, 2, 3);
    for (item in arr) {
        println(item);
    }
}

ভাষার বৈশিষ্ট্যগুলি পরীক্ষা করতে আপনি একটি খেলার মাঠও ব্যবহার করতে পারেন ।


2
একটি মন্তব্য, একটি অ্যারের মান মুদ্রণ করতে, আমরা পরিবর্তে লুপিং array.joinToString ("") ব্যবহার করতে পারেন।
anticafe


47

কোটলিনে বেশ কয়েকটি উপায় রয়েছে।

var arr = IntArray(size) // construct with only size

তারপরে ব্যবহারকারীদের কাছ থেকে বা অন্য সংগ্রহ থেকে বা যেখানে আপনি চান কেবল প্রাথমিক মান।

var arr = IntArray(size){0}  // construct with size and fill array with 0
var arr = IntArray(size){it} // construct with size and fill with its index

আমরা বিল্ট ইন ফাংশন সহ অ্যারেও তৈরি করতে পারি-

var arr = intArrayOf(1, 2, 3, 4, 5) // create an array with 5 values

অন্য উপায়

var arr = Array(size){0} // it will create an integer array
var arr = Array<String>(size){"$it"} // this will create array with "0", "1", "2" and so on.

এছাড়াও আপনি ব্যবহার করতে পারেন doubleArrayOf()বা DoubleArray()বা কোন int এর পরিবর্তে কোন আদিম প্রকার।


var arr = IntArray(size, { it * 1 } )হিসাবে একইvar arr = IntArray(size){it}
ডেট

30

Kotlin আমরা ব্যবহার অ্যারে তৈরি করতে পারেন arrayOf(), intArrayOf(), charArrayOf(), booleanArrayOf(),longArrayOf() ফাংশন।

উদাহরণ স্বরূপ:

var Arr1 = arrayOf(1,10,4,6,15)  
var Arr2 = arrayOf<Int>(1,10,4,6,15)  
var Arr3 = arrayOf<String>("Surat","Mumbai","Rajkot")  
var Arr4 = arrayOf(1,10,4, "Ajay","Prakesh")  
var Arr5: IntArray = intArrayOf(5,10,15,20)  

দয়া করে এই উত্তরটির পুনরায় ফর্ম্যাট করুন যাতে কোডটি কী এবং মন্তব্য কী তা স্পষ্ট।

6

পুরানো প্রশ্ন, তবে আপনি যদি একটি ব্যাপ্তি ব্যবহার করতে চান:

var numbers: IntArray = IntRange(10, 50).step(10).toList().toIntArray()

ফলন প্রায় একই ফলাফল:

var numbers = Array(5, { i -> i*10 + 10 })

ফলাফল: 10, 20, 30, 40, 50

আমি মনে করি প্রথম বিকল্পটি আরও কিছুটা পাঠযোগ্য। দুটোই কাজ করে।


5

আপনি এই পদ্ধতি ব্যবহার করতে পারেন

var numbers=Array<Int>(size,init)
var numbers=IntArray(size,init)
var numbers= intArrayOf(1,2,3)

উদাহরণ

var numbers = Array<Int>(5, { i -> 0 })

init ডিফল্ট মান উপস্থাপন করে (আরম্ভ করা)


1
এটির সাহায্যে আপনি জন্য উদাহরণ দিতে initArray<Int>()এবং IntArray(), আপনার উত্তর এখন যতটা সহায়ক নয়।
লার্স ব্লুমবার্গ

উত্তরটি পরিবর্তন করা হয়েছে
আলী হাসান

অ্যারে <আইটেন্ট> আপনাকে বাক্সযুক্ত পূর্ণসংখ্যার একটি অ্যারে দেয়, যখন ইন্টআরে আপনাকে প্রকৃত ইনট অ্যারে দেয়।
মাইক

4

Kotlin ভাষা ওভারহেড বক্সিং ছাড়া আদিম ধরনের অ্যারে প্রতিনিধিত্বমূলক ক্লাস বিশেষ জানিয়েছেন: উদাহরণস্বরূপ - IntArray, ShortArray, ByteArray, বলতে ইত্যাদি আমি প্রয়োজন যে, এই শ্রেণীর পিতা বা মাতা কোন উত্তরাধিকার সম্পর্ক Arrayবর্গ, কিন্তু তারা পদ্ধতি এবং বৈশিষ্ট্য একই সেট আছে। তাদের প্রত্যেকেরও সংশ্লিষ্ট কারখানার কাজ রয়েছে। সুতরাং, কোটলিনে মানগুলি সহ একটি অ্যারের সূচনা করার জন্য আপনাকে কেবল এটি টাইপ করতে হবে:

val myArr: IntArray = intArrayOf(10, 20, 30, 40, 50)

... বা এইভাবে:

val myArr = Array<Int>(5, { i -> ((i+1) * 10) })

myArr.forEach { println(it) }                                // 10, 20, 30, 40, 50

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

myArr[0] = (myArr[1] + myArr[2]) - myArr[3]

আশাকরি এটা সাহায্য করবে.


3

আমি মনে করি একটি জিনিস যা উল্লেখযোগ্য এবং ডকুমেন্টেশন থেকে যথেষ্ট স্বজ্ঞাত নয় তা হ'ল, আপনি যখন অ্যারে তৈরি করতে কোনও ফ্যাক্টরি ফাংশন ব্যবহার করেন এবং আপনি এর আকার নির্দিষ্ট করেন, অ্যারেটি তাদের সূচক মানের সাথে সমান মানগুলির সাথে আরম্ভ করা হয়। উদাহরণস্বরূপ, এই জাতীয় অ্যারেতে val array = Array(5, { i -> i }):, নির্ধারিত প্রাথমিক মানগুলি হয় [0,1,2,3,4]এবং বলা হয় না [0,0,0,0,0],। ডকুমেন্টেশন থেকে কেন val asc = Array(5, { i -> (i * i).toString() })একটি উত্তর উত্পাদন করে["0", "1", "4", "9", "16"]


3

আপনি এটির মতো একটি ইন্টার অ্যারে তৈরি করতে পারেন:

val numbers = IntArray(5, { 10 * (it + 1) })

5 হল আন্ত অ্যারের আকার। ল্যাম্বডা ফাংশন হ'ল এলিমেন্ট ফাংশন। [0,4] এর মধ্যে 'এটি' ব্যাপ্তি, [1] 1,5 এর মধ্যে 1 টির পরিসীমা

উত্স ফাংশন:

 /**
 * An array of ints. When targeting the JVM, instances of this class are 
 * represented as `int[]`.
 * @constructor Creates a new array of the specified [size], with all elements 
 *  initialized to zero.
 */
 public class IntArray(size: Int) {
       /**
        * Creates a new array of the specified [size], where each element is 
        * calculated by calling the specified
        * [init] function. The [init] function returns an array element given 
        * its index.
        */
      public inline constructor(size: Int, init: (Int) -> Int)
  ...
 }

অ্যারেএস.কে.টি-তে সংজ্ঞায়িত ইন্টআর্রে শ্রেণি


2

আপনি এটি চেষ্টা করতে পারেন:

var a = Array<Int>(5){0}

2

এখানে প্রদর্শিত হিসাবে আপনি কেবল বিদ্যমান স্ট্যান্ডার্ড লাইব্রেরি পদ্ধতিগুলি ব্যবহার করতে পারেন :

val numbers = intArrayOf(10, 20, 30, 40, 50)

এটি একটি বিশেষ নির্মাণকারীর ব্যবহার করা বুদ্ধিমান হতে পারে যদিও:

val numbers2 = IntArray(5) { (it + 1) * 10 }

আপনি একটি আকার এবং একটি ল্যাম্বদা পাস করেন যাতে মানগুলি কীভাবে উপস্থাপন করতে হয় তা বর্ণনা করে। এখানে ডকুমেন্টেশন রয়েছে:

/**
 * Creates a new array of the specified [size], where each element is calculated by calling the specified
 * [init] function. The [init] function returns an array element given its index.
 */
public inline constructor(size: Int, init: (Int) -> Int)

2

আমি ভাবছি কেন কেন কেউ সর্বাধিক সহজ উত্তর দেয় না:

val array: Array<Int> = [1, 2, 3]

আমার মূল উত্তরের মন্তব্যের এক হিসাবে, আমি বুঝতে পেরেছি এটি কেবল তখনই কাজ করে যখন টীকাগুলির যুক্তিগুলিতে ব্যবহৃত হয় (যা আমার পক্ষে সত্যই অপ্রত্যাশিত ছিল)।

দেখে মনে হচ্ছে কোটলিন টীকাগুলির বাইরে অ্যারে লিটারাল তৈরি করার অনুমতি দেয় না।

উদাহরণস্বরূপ, args4j লাইব্রেরি থেকে @ অপশনটি ব্যবহার করে এই কোডটি দেখুন:

    @Option (
        নাম = "-হ",
        উপাধি = ["--হেল্প", "-?"],
        ব্যবহার = "এই সহায়তা দেখান"
    )
    var সহায়তা: বুলিয়ান = মিথ্যা

বিকল্প আর্গুমেন্ট "এলিয়াসস" টাইপ হয় Array<String>


2
এই কোডটি সহ আমি নিম্নলিখিত ত্রুটি পেয়েছি: অসমর্থিত [টীকাগুলির বাইরে আক্ষরিক সংগ্রহ]
রামি পি

আমি এর আগে দেখিনি। এই সিনট্যাক্সটি কি কোটলিনে নতুন?
লার্স ব্লম্বার্গ

@ লার্সবার্বার্গ, সম্ভবত, আমি সম্প্রতি কোটলিনকে সম্প্রতি ইন্টেলিজজে 2019.1 দিয়ে ব্যবহার করতে শুরু করেছি এবং আমি যেমন একটি স্ট্রিং অ্যারে শুরু করেছি ঠিক তেমনই দেখিয়েছি এবং এটি কাজ করেছে
hdkrus

@ রমিপ, ভাল পয়েন্ট, আমি এটিকে টীকাগুলির যুক্তিতে ব্যবহার করেছি used তবে এর অর্থ এই হবে যে অ্যারে আক্ষরিক কিছু প্রসঙ্গে কাজ করে এবং অন্য কিছুতে হয় না?
hdkrus

1
@hdkrus আপনি কীভাবে আপনার উত্তরটি আপডেট করে দেখান না যে অ্যারে সূচনাটি টীকাগুলির সাথে কীভাবে কাজ করে? এই প্রশ্নগুলির অনেক পাঠকের পক্ষে এটি মূল্যবান হতে পারে।
লার্স ব্লুমবার্গ

1

আমার ক্ষেত্রে আমার ড্রয়ারের আইটেমগুলি শুরু করতে হবে। আমি নীচে কোড দ্বারা ডেটা পূরণ।

    val iconsArr : IntArray = resources.getIntArray(R.array.navigation_drawer_items_icon)
    val names : Array<String> = resources.getStringArray(R.array.navigation_drawer_items_name)


    // Use lambda function to add data in my custom model class i.e. DrawerItem
    val drawerItems = Array<DrawerItem>(iconsArr.size, init = 
                         { index -> DrawerItem(iconsArr[index], names[index])})
    Log.d(LOGGER_TAG, "Number of items in drawer is: "+ drawerItems.size)

কাস্টম মডেল শ্রেণি-

class DrawerItem(var icon: Int, var name: String) {

}

এটি সত্যিই সংবেদনশীল উপায়ে প্রশ্নের উত্তর দেয় না।
কিউয়ার্প-ডের্প

আইটেমগুলি যুক্ত করতে আমি ল্যাম্বডা ফাংশনটি ব্যবহার করেছি তাতে মন্তব্যটি দেখুন।
রাহুল

এটি এখনও কমপক্ষে অন্যান্য উত্তরের তুলনায় এই সমস্যাটি সমাধান করার এক বিশৃঙ্খল উপায় বলে মনে হচ্ছে। এছাড়াও আমি আমার পূর্ববর্তী বার্তাটি দেখেছি এবং এটি পূর্ববর্তী ক্ষেত্রে কঠোর বলে মনে হচ্ছে - আমি দুঃখিত।
কিউয়ারপ-ডের্প

এটা ঠিক আছে, কোন সমস্যা নেই। আমি কেবল এমনভাবে উত্তর দেওয়ার চেষ্টা করেছি যা আমার সমস্যার সমাধান করেছে, আমি অন্যান্য উত্তরের সাথে তুলনা করি না। ধন্যবাদ!
রাহুল

1

বিশ্বব্যাপী int অ্যারে ঘোষণা করুন

var numbers= intArrayOf()

পরবর্তী onCreate পদ্ধতি মান সহ আপনার অ্যারে আরম্ভ করুন

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    //create your int array here
    numbers= intArrayOf(10,20,30,40,50)
}

যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করে।
রোলস্টুহফলাহার

1

জাভাতে একটি অ্যারে যেমন শুরু করা যেতে পারে:

int numbers[] = new int[] {10, 20, 30, 40, 50}

কিন্তু কোটলিনে একটি অ্যারে অনেকগুলি সূচনা করে যেমন:

যে কোনও জেনেরিক ধরণের অ্যারে আপনি অ্যারেওফ () ফাংশনটি ব্যবহার করতে পারেন :

val arr = arrayOf(10, 20, 30, 40, 50)

val genericArray = arrayOf(10, "Stack", 30.00, 40, "Fifty")

কোটলিনের ইউটিলিটি ফাংশনগুলি ব্যবহার করে একটি অ্যারে শুরু করা যেতে পারে

val intArray = intArrayOf(10, 20, 30, 40, 50)

1

সহজ উপায়:

পূর্ণসংখ্যার জন্য:

var সংখ্যা = অ্যারেঅফ <<> (10, 20, 30, 40, 50)

সমস্ত ডেটা ধরণের ধরুন

var সংখ্যা = অ্যারেওফ (10, "স্ট্রিংয়ের মান", 10.5)



0

এইভাবে, আপনি কোল্টিনে ইন অ্যারে শুরু করতে পারেন।

 val values: IntArray = intArrayOf(1, 2, 3, 4, 5,6,7)

যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কীভাবে এবং / বা কেন এটি সমস্যার সমাধান করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করলে উত্তরের দীর্ঘমেয়াদী মান উন্নত হবে।
লিওপাল

0

আমার উত্তর পরিপূরকগুলি @ মরন এগুলি অ্যারে শুরু করার কয়েকটি উপায়:

একটি অ্যারে ব্যবহার করুন

val numbers = arrayOf(1,2,3,4,5)

একটি কঠোর অ্যারে ব্যবহার করুন

val numbers = intArrayOf(1,2,3,4,5)

ম্যাট্রিকের ধরণের মিশ্রণ করুন

val numbers = arrayOf(1,2,3.0,4f)

নেস্টিং অ্যারে

val numbersInitials = intArrayOf(1,2,3,4,5)
val numbers = arrayOf(numbersInitials, arrayOf(6,7,8,9,10))

গতিশীল কোড দিয়ে শুরু করার ক্ষমতা

val numbers = Array(5){ it*2}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.