آرایه چند بعدی

آموزش کپی آرایه های جاوا (به زبان کاملا ساده)

اساطیر زبان

در این آموزش با روش های مختلفی که می توانید از آن ها برای کپی کردن آرایه ها (هم یک بعدی و هم دو بعدی) در جاوا استفاده کنید، آشنا می شوید.

چندین تکنیک وجود دارد که می توانید برای کپی کردن آرایه ها در جاوا استفاده کنید.

 


جاوا

توی این پک فوق العاده، جاوا رو جوری یاد میگیری که تو هیچ کلاس آموزشی یا پک دیگه ای نه دیدی نه شنیدی! بدون هیچ کلاسی، با جاوا اپلیکیشن بزن، پروژه محور یاد بگیر و حسابی پول در بیار! 


 

۱- کپی کردن آرایه ها با استفاده از عملگر انتساب

بیایید مثالی بزنیم ،

  1. class CopyArray {
  2. public static void main(String[] args) {
  3. int [] numbers = {1, 2, 3, 4, 5, 6};
  4. int [] positiveNumbers = numbers; // copying arrays
  5. for (int number: positiveNumbers) {
  6. System.out.print(number + “, “);
  7. }
  8. }
  9. }

خروجی

۱, ۲, ۳, ۴, ۵, ۶

اگرچه به نظر می رسد این روش برای کپی کردن آرایه ها کاملا کارآمد است ، اما مشکلی در این مورد وجود دارد.

اگر عناصر یک آرایه را در مثال بالا تغییر دهید ، عناصر مربوط به آرایه دیگر نیز تغییر می کند.

  1. class AssignmentOperator {
  2. public static void main(String[] args) {
  3. int [] numbers = {1, 2, 3, 4, 5, 6};
  4. int [] positiveNumbers = numbers; // copying arrays
  5. numbers[0] = -1;
  6. for (int number: positiveNumbers) {
  7. System.out.print(number + “, “);
  8. }
  9. }
  10. }

خروجی

-۱, ۲, ۳, ۴, ۵, ۶

هنگامی که اولین عنصر آرایه numbers به -۱ تغییر می کند، اولین عنصر آرایه positiveNumbers نیز به -۱ تبدیل می شود. به این دلیل که هر دو آرایه به یک شیء آرایه یکسان اشاره دارند.

به این کار کپی سطحی گفته می شود.

با این حال ، بیشتر اوقات ، به جای کپی سطحی ، به کپی عمیق نیاز داریم. یک کپی عمیق مقادیر ایجاد شی آرایه جدید را کپی می کند.

۲- استفاده از ساختار حلقه برای کپی کردن آرایه ها

بیایید یک مثال بزنیم:

  1. import java.util.Arrays;
  2. class ArraysCopy {
  3. public static void main(String[] args) {
  4. int [] source = {1, 2, 3, 4, 5, 6};
  5. int [] destination = new int[6];
  6. for (int i = 0; i < source.length; ++i) {
  7. destination[i] = source[i];
  8. }
  9. // converting array to string
  10. System.out.println(Arrays.toString(destination));
  11. }
  12. }

خروجی

[۱, ۲, ۳, ۴, ۵, ۶]

در اینجا ، از حلقه برای کپی عناصر آرایه منبع استفاده می شود. در هر تکرار ، عنصر متناظر از آرایه منبع در آرایه مقصد کپی می شود.

آرایه منبع و مقصد مرجع یکسان ندارند (کپی عمیق). به این معنی که اگر عناصر یک آرایه (یا منبع یا مقصد) تغییر یابد ، عناصر مربوط به آرایه دیگر تغییر نمی کند.

از متد ()toString برای تبدیل آرایه به رشته (فقط برای خروجی) استفاده می شود.

روش بهتری (بهتر از حلقه ها) برای کپی کردن آرایه ها در جاوا با استفاده از ()arraycopy و ()copyOfRange وجود دارد.

۳- کپی کردن آرایه ها با ()arraycopy

کلاس System شامل متد ()arraycopy است که به شما امکان می دهد داده ها را از یک آرایه به دیگری کپی کنید.

روش ()arraycopy کارآمد و انعطاف پذیر است. این روش به شما امکان می دهد بخش مشخصی از آرایه منبع را به آرایه مقصد کپی کنید.

public static void arraycopy(Object src, int srcPos,

Object dest, int destPos, int length)

در اینجا،

  • src – آرایه ای که می خواهید کپی کنید
  • srcPos – موقعیت شروع (شاخص) در آرایه src
  • dest – عناصر آرایه src در این آرایه کپی می شوند
  • destPos – موقعیت شروع (شاخص) در آرایه مقصد
  • length – تعداد عناصر برای کپی کردن

بیایید یک مثال بزنیم:

  1. // To use Arrays.toString() method
  2. import java.util.Arrays;
  3. class ArraysCopy {
  4. public static void main(String[] args) {
  5. int[] n1 = {2, 3, 12, 4, 12, -2};
  6. int[] n3 = new int[5];
  7. // Creating n2 array of having length of n1 array
  8. int[] n2 = new int[n1.length];
  9. // copying entire n1 array to n2
  10. System.arraycopy(n1, 0, n2, 0, n1.length);
  11. System.out.println(“n2 = ” + Arrays.toString(n2));
  12. // copying elements from index 2 on n1 array
  13. // copying element to index 1 of n3 array
  14. // ۲ elements will be copied
  15. System.arraycopy(n1, 2, n3, 1, 2);
  16. System.out.println(“n3 = ” + Arrays.toString(n3));
  17. }
  18. }

خروجی

n2 = [2, 3, 12, 4, 12, -2]

n3 = [0, 12, 4, 0, 0]

توجه داشته باشید ، مقدار اولیه پیش فرض عناصر یک آرایه از نوع عدد صحیح ۰ است.

۴- کپی کردن آرایه ها با روش ()copyOfRange

علاوه بر این ، می توانید از روش ()copyOfRange تعریف شده در کلاس java.util.Arrays برای کپی کردن آرایه ها استفاده کنید. احتیاجی نیست قبل استفاده از این روش آرایه مقصد را ایجاد کنید.

در این جا نحوه انجام این کار آورده شده است.

  1. // To use toString() and copyOfRange() method
  2. import java.util.Arrays;
  3. class ArraysCopy {
  4. public static void main(String[] args) {
  5. int[] source = {2, 3, 12, 4, 12, -2};
  6. // copying entire source array to destination
  7. int[] destination1 = Arrays.copyOfRange(source, 0, source.length);
  8. System.out.println(“destination1 = ” + Arrays.toString(destination1));
  9. // copying from index 2 to 5 (5 is not included)
  10. int[] destination2 = Arrays.copyOfRange(source, 2, 5);
  11. System.out.println(“destination2 = ” + Arrays.toString(destination2));
  12. }
  13. }

خروجی

destination1 = [2, 3, 12, 4, 12, -2]

destination2 = [12, 4, 12]

۵- کپی کردن آرایه های دو بعدی با استفاده از حلقه

مثالی برای کپی کردن آرایه های دو بعدی نامنظم با استفاده از حلقه وجود دارد:

  1. import java.util.Arrays;
  2. class ArraysCopy {
  3. public static void main(String[] args) {
  4. int[][] source = {
  5. {۱, ۲, ۳, ۴},
  6. {۵, ۶},
  7. {۰, ۲, ۴۲, -۴, ۵}
  8. };
  9. int[][] destination = new int[source.length][];
  10. for (int i = 0; i < destination.length; ++i) {
  11. // allocating space for each row of destination array
  12. destination[i] = new int[source[i].length];
  13. for (int j = 0; j < destination[i].length; ++j) {
  14. destination[i][j] = source[i][j];
  15. }
  16. }
  17. // displaying destination array
  18. System.out.println(Arrays.deepToString(destination));
  19. }
  20. }

خروجی

[[۱, ۲, ۳, ۴], [۵, ۶], [۰, ۲, ۴۲, -۴, ۵]]

در کد بالا از روش() Arrays.deepToString  استفاده کردیم. ()deepToString نمایش بهتری از یک آرایه چند بعدی را مانند یک آرایه ۲ بعدی فراهم می کند.

می توانید حلقه داخلی کد فوق را با ()System.arraycopy یا()Arrays.copyOf مانند آرایه یک بعدی جایگزین کنید.

در اینجا مثالی برای انجام همان کار با روش ()arraycopy آورده شده است.

  1. import java.util.Arrays;
  2. class AssignmentOperator {
  3. public static void main(String[] args) {
  4. int[][] source = {
  5. {۱, ۲, ۳, ۴},
  6. {۵, ۶},
  7. {۰, ۲, ۴۲, -۴, ۵}
  8. };
  9. int[][] destination = new int[source.length][];
  10. for (int i = 0; i < source.length; ++i) {
  11. // allocating space for each row of destination array
  12. destination[i] = new int[source[i].length];
  13. System.arraycopy(source[i], 0, destination[i], 0, destination[i].length);
  14. }
  15. // displaying destination array
  16. System.out.println(Arrays.deepToString(destination));
  17. }
  18. }

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست