๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Java

[Java] ๋ฐฐ์—ด(Array)

by Bhinney 2022. 12. 19.

๐Ÿ”Ž ๋ฐฐ์—ด(Array)

๋ฐฐ์—ด์ด๋ž€?
  • ๊ฐ™์€ ํƒ€์ž…์˜ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ
  • "new" ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ํƒ€์ž…๊ณผ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ฐฐ์—ด ์ƒ์„ฑ
  • ๋ฐฐ์—ด์˜ ๊ฐ ์ €์žฅ ๊ณต๊ฐ„ ๋ฐฐ์—ด์˜ ์š”์†Œ(element)
  • ๋ฐฐ์—ด์˜ ์š”์†Œ๋งˆ๋‹ค ๋ถ™์—ฌ์ง„ ๋ฒˆํ˜ธ๋Š” ์ธ๋ฑ์Šค(index)
์ธ๋ฑ์Šค(index)
  • ์ธ๋ฑ์Šค์˜ ๋ฒ”์œ„ : 0 ~ ๋ฐฐ์—ด์˜ ๊ธธ์ด -1
  • โ—๏ธ์ธ๋ฑ์Šค์˜ ์‹œ์ž‘์€ 0๋ถ€ํ„ฐโ—๏ธ
1์ฐจ์› ๋ฐฐ์—ด
  • ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฐ์—ด์˜ ํ˜•ํƒœ
  • ํƒ€์ž… ๋’ค์— ๋Œ€๊ด„ํ˜ธ๋ฅผ ๋ถ™์—ฌ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”
/* 
 * ํƒ€์ž…[] ์ฐธ์กฐ๋ณ€์ˆ˜์ด๋ฆ„;
 * ์ฐธ์กฐ๋ณ€์ˆ˜์ด๋ฆ„ = new ํƒ€์ž…[๊ฐœ์ˆ˜] 
 */

String[] MONTH; // ์ฐธ์กฐ ๋ณ€์ˆ˜ ์„ ์–ธ
MONTH = new String[12]; // ๋ฐฐ์—ด ๊ฐœ์ˆ˜ (12๊ฐœ) ์ƒ์„ฑ, ์ดˆ๊ธฐํ™”

/* ์ฐธ์กฐ๋ณ€์ˆ˜์ด๋ฆ„ = {๋ฐฐ์—ด ์š”์†Œ๋“ค} */
MONTH = {January, Febuary, March, April, .... , November, December}; 

/* 
 * ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ๊ฐ„๋žตํžˆ ๋‚˜ํƒ€๋‚ด๋ฉด 
 * ํƒ€์ž…[] ์ฐธ์กฐ๋ณ€์ˆ˜์ด๋ฆ„ = new ํƒ€์ž…[์š”์†Œ์˜ ๊ฐœ์ˆ˜]; 
 */
String[] MONTH = new String[12]

/* ๋ฐฐ์—ด์ฐธ์กฐ๋ณ€์ˆ˜์ด๋ฆ„[์ธ๋ฑ์Šค] : ๋ฐฐ์—ด์˜ ์š”์†Œ */
MONTH[0] = January
MONTH[11] = December

/* 
 * ๋ฐฐ์—ด์ฐธ์กฐ๋ณ€์ˆ˜์ด๋ฆ„.length : ๋ฐฐ์—ด์˜ ์š”์†Œ์˜ ๊ฐœ์ˆ˜ (= ๋ฐฐ์—ด์˜ ๊ธธ์ด)
 * ์ธ๋ฑ์Šค = 0 ~ ์š”์†Œ์˜ ๊ฐœ์ˆ˜ -1 
 */
MONTH.length = 12
2์ฐจ์› ๋ฐฐ์—ด
  • ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๊ฐ€  ๋‹ค๋ฅธ ๋ฐฐ์—ด์ธ ๊ตฌ์กฐ
int[][] number;
int number = = new int number[][];
๊ฐ€๋ณ€ ๋ฐฐ์—ด
  • n์ฐจ์› ๋ฐฐ์—ด(n>=2)์—์„œ ๋งˆ์ง€๋ง‰ ์ฐจ์ˆ˜์˜ ๋ฐฐ์—ด ๊ธธ์ด๋ฅผ ๊ณ ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๋ฐฐ์—ด
int[][] ages = new int [5][];โ€‹

โญ๏ธ ๋ฐฐ์—ด ๋‹ค๋ฃจ๊ธฐ

๋ฐฐ์—ด์˜ ์ถœ๋ ฅ
  • toString() : ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ํŽธํ•˜๊ฒŒ ์ถœ๋ ฅ ๊ฐ€๋Šฅ. ์ผ์ฐจ์› ๋ฐฐ์—ด์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • deepToString() : ๋‹ค์ฐจ์› ๋ฐฐ์—ด์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ
public class PrintArray {
   public static void main(String[] args) {
      int[] num = {25, 12, 2022};
      String[][] arr = {
         {"25", "์ผ"},
         {"12", "์›”"},
         {"2022", "๋…„"}
      };

      System.out.println(Arrays.toString(num));
      System.out.println(Arrays.deepToString(arr));
   }
}

/*
[25, 12, 2022]
[[25, ์ผ], [12, ์›”], [2022, ๋…„]]
*/
๋ฐฐ์—ด์˜ ๋น„๊ต
  • equals() : ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋น„๊ตํ•ด์„œ ๊ฐ™์œผ๋ฉด true, ๋‹ค๋ฅด๋ฉด false ๋ฐ˜ํ™˜. ์ผ์ฐจ์› ๋ฐฐ์—ด์—๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ
  • deepEquals() : ๋‹ค์ฐจ์› ๋ฐฐ์—ด์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ
public class CompareArray {
   public static void main(String[] args) {
      String[] arr1 = {"December", "12์›”"};
      String[] arr2 = {"December", "12์›”"};
      String[] arr3 = {"December", "25์ผ"};

      int[][] arr4 = {
         {1,2,3},
         {25, 12, 2022}
      };
      int[][] arr5 = {
         {1,2,3},
         {25, 12, 2022}
      };
      int[][] arr6 = {
         {3,2,1},
         {25, 12, 2022}
      };

      System.out.println(Arrays.equals(arr1, arr2));
      System.out.println(Arrays.equals(arr1, arr3));
      System.out.println(Arrays.deepEquals(arr4, arr5));
      System.out.println(Arrays.deepEquals(arr4, arr6));
   }
}

/*
true
false
true
false
*/
๋ฐฐ์—ด์˜ ๋ณต์‚ฌ
  • copyOf() : ๋ฐฐ์—ด์˜ ์‹œ์ž‘๋ถ€ํ„ฐ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๋ฐ˜ํ™˜
  • copyOfRange() : ์ง€์ •๋œ ๋ฒ”์œ„์˜ ๋ฐฐ์—ด ์ผ๋ถ€๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐ˜ํ™˜
Arrays.copyOf(์›๋ž˜ ๋ฐฐ์—ด, ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ ๊ธธ์ด);
Arrays.copyOfRange(์›๋ž˜ ๋ฐฐ์—ด, ๋ณต์‚ฌ๋ฅผ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค, ๋ณต์‚ฌํ•  ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค + 1);

 

public class ArrayCopy {
   public static void main(String[] args) {
      String[] arr = {"red", "pink", "purple", "green", "blue", "yellow"};

      System.out.println(Arrays.toString(Arrays.copyOf(arr, arr.length)));
      System.out.println(Arrays.toString(Arrays.copyOf(arr, 3)));
      System.out.println(Arrays.toString(Arrays.copyOfRange(arr, 0,6)));
      System.out.println(Arrays.toString(Arrays.copyOfRange(arr, 3,5)));
   }
}

/*
[red, pink, purple, green, blue, yellow]
[red, pink, purple]
[red, pink, purple, green, blue, yellow]
[green, blue]
*/

๐Ÿ“1์ฐจ์› ๋ฐฐ์—ด ์˜ˆ์‹œ

1๏ธโƒฃ ๋ฐฐ์—ด์˜ ์ดํ•ฉ๊ณผ ํ‰๊ท 
public class SumAndAvg {
	public static void main(String[] args) {
		int[] arr = {100, 80, 95, 70, 90};
		System.out.println(getSum(arr));
		System.out.println(getAvg(arr));
	}
	private static int getSum(int[] scores){
		int sum = 0;
		for (int i = 0; i < scores.length; i++) {
			sum += scores[i];
		}
		return sum;
	}
	private static float getAvg(int[] scores){
		return getSum(scores)/ (float)scores.length;
	}
}

/*
435
87.0
*/
2๏ธโƒฃ ๋ฐฐ์—ด์˜ ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’
public class MaxAndMin {
   public static void main(String[] args) {
      int[] arr = {8,6,2,9,4};
      System.out.println(getMax(arr));
      System.out.println(getMin(arr));
   }

   private static int getMax(int[] arr) {
      int max = arr[0];
      for (int i = 1; i < arr.length; i++) {
         if (arr[i] > max) {
            max = Math.max(max, arr[i]);
         }
      }
      return max;
   }
   private static int getMin(int[] arr) {
      int min = arr[0];
      for (int i = 1; i < arr.length; i++) {
         if (arr[i] < min) {
            min = Math.min(min, arr[i]);
         }
      }
      return min;
   }
}
/*
9
2
*/
3๏ธโƒฃ ๋ฐฐ์—ด์„ ์„ž๊ธฐ
public class ShuffleArray {
   public static void main(String[] args) {
      int[] arr = {1,2,3,4,5,6,7,8,9,10};
      System.out.println(Arrays.toString(getShuffle(arr)));
   }
   private static int[] getShuffle(int[] arr) {
      for (int i = 0; i < 10; i++) {
         int n = (int)(Math.random() * 10);
         int tmp = arr[0];
         arr[0] = arr[n];
         arr[n] = tmp;
      }
      return arr;
   }
}

/*
[1, 2, 6, 3, 5, 7, 9, 8, 10, 4]
*/
4๏ธโƒฃ ๋กœ๋˜ ๋ฒˆํ˜ธ ๋งŒ๋“ค๊ธฐ
public class MakeLotto {
   public static void main(String[] args) {
      System.out.println(Arrays.toString(getLotto()));
   }
   private static int[] getLotto() {
      int[] ball = new int[45];
      for (int i = 0; i < ball.length; i++) {
         ball[i] = i + 1;
      }
      for (int i = 0; i < 6; i++) {
         int n = (int) (Math.random() * 45);
         int tmp = ball[i];
         ball[i] = ball[n];
         ball[n] = tmp;
      }

      return Arrays.copyOfRange(ball, 0, 6);
   }
}

/*
[39, 29, 24, 15, 18, 1]
*/

๐Ÿ“2์ฐจ์› ๋ฐฐ์—ด ์˜ˆ์‹œ

1๏ธโƒฃ ๋ฐฐ์—ด์˜ ์ดํ•ฉ
public class Sum {
   public static void main(String[] args) {
      int[][] score = {
         {100, 100, 100},
         {30, 20, 50},
         {100, 70}
      };

      System.out.println(getSum(score));
   }
   private static int getSum(int[][] score){
      int sum = 0;

      for (int i = 0; i < score.length; i++) {
         for (int j = 0; j < score[i].length; j++) {
            sum += score[i][j];
         }
      }

      return sum;
   }
}
2๏ธโƒฃ ๋‹จ์–ด ์ผ์น˜
public class CorrectWord {
   public static void main(String[] args) {
      String[][] words = {
         {"number", "์ˆซ์ž"},
         {"December", "12์›”"},
         {"Array", "๋ฐฐ์—ด"}
      };

      String[] str= {"์ˆซ์ž", "11์›”", "๋ฐฐ์—ด"};

      for (int i = 0; i < words.length; i++) {

         System.out.println(String.format("Q%d. %s์˜ ๋œป์€?", i + 1, words[i][0]));
         if (str[i].equals(words[i][1])) {
            System.out.println("์ •๋‹ต์ž…๋‹ˆ๋‹ค.");
         } else {
            System.out.println(String.format("ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค. ์ •๋‹ต์€ %s์ž…๋‹ˆ๋‹ค.", words[i][1]));
         }
      }
   }
}
/*
Q1. number์˜ ๋œป์€?
์ •๋‹ต์ž…๋‹ˆ๋‹ค.
Q2. December์˜ ๋œป์€?
ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค. ์ •๋‹ต์€ 12์›”์ž…๋‹ˆ๋‹ค.
Q3. Array์˜ ๋œป์€?
์ •๋‹ต์ž…๋‹ˆ๋‹ค.
*/

 

๋Œ“๊ธ€