Javaにおける配列および配列アプリケーションの拡張について
107113 ワード
配列の定義配列は、同じタイプのデータの秩序化集合 である.配列は、同じタイプのいくつかのデータを記述し、一定の前後順に並べて組み合わせた である.各データは配列要素と呼ばれ、各配列要素は下付き文字でアクセスでき、下付き文字は0から の計算を開始する.
配列の宣言と作成まず配列の変数を示してこそ、プログラムで配列を使用して変数を宣言する構文が である. java言語はnewオペレータで配列を作成し、構文は以下の である.配列の要素はインデックスによってアクセスされ、配列インデックスは0から である.取得配列の長い用:配列名.length
メモリ解析宣言配列は、宣言のタイプがスタックに存在する である.配列を作成するには、宣言されたタイプがスタックに空間を開き、配列 を格納します.配列要素に を割り当てる
配列の3種類の初期化静的初期化 動的初期化 デフォルト初期化 配列は参照タイプであり、その要素はクラスのインスタンス変数に相当するため、配列が割り当てられると、各要素もインスタンス変数と同様に を暗黙的に初期化する.
配列の4つの基本的な特徴その長さは決定され、配列が作成されると、彼のサイズは変更できない である.要素は同じタイプでなければなりません.ブレンドタイプは許可されません. 配列の要素は、基本タイプおよび参照タイプ を含む任意のタイプであってもよい.配列の変数は参照タイプに属し、オブジェクトと見なされ、配列オブジェクト自体がスタックに格納されている.
配列の結果の下の合法区間は、[0.length-1]で、境界を越えると間違って報告されます. ArrayIndexOutOfBoundsException:配列の下付き境界異常を示す 配列構造の注意点配列は、同じデータ型(任意のタイプであってもよい)の秩序化集合 である.配列もオブジェクトであり、配列の要素はオブジェクトのメンバー に相当する.配列の長さは決定され、可変ではなく、境界を越えると とエラーが発生します.
配列の使用一般Forサイクル 強化Forサイクルの使用 配列の作り方 参照配列戻り値 2 D配列2 Dはいれつ 2 2次元配列は、1つの1次元配列に別の1次元配列がネストされている と見なすことができる.
配列ツールクラス:ArraysクラスArraysクラス配列オブジェクト自体を使用する方法がないため、データオブジェクトに対していくつかの基本操作を行うことができ、APIにツールクラスArraysを提供して使用することができ、データオブジェクトに対していくつかの基本操作を行うことができ、JDKヘルプドキュメントからもこのクラス を見つけることができます. ArraysクラスのメソッドはすべてStatic修飾の静的メソッドであり、クラス名を直接使用して を呼び出すことができます.
にぶんたんさくほう
1.二分検索法は、最大インデックス値、最小インデックス値および中間インデックス値の3つを入力値と比較して検索する.
2.二分検索法を使用すると、配列はソートされた配列であり、同じ数字ではない必要があります.
疎配列一つの配列の大部分が0である場合、または同じ値の配列がそうである場合、データ を疎配列で保存することができる.疎配列の処理方式 記録配列は全部で何行と列があって、何個の異なる値 がありますは、異なる値を有する要素の行、列および値を小規模な配列に記録し、プログラムの規模 を圧縮する.
配列の宣言と作成
int[] nums; //
int nums[];// ,
int[] nums=new int[]
package com.YouHaoXin.array;
public class ArrayDemo01 {
public static void main(String[] args) {
int[] nums;//1.
nums=new int[10];//2.
//int[] nums=new int[10];
nums[0]=1;//3.
nums[1]=10;
nums[2]=100;
nums[3]=1000;
nums[4]=10000;
nums[5]=2;
nums[6]=20;
nums[7]=200;
nums[8]=2000;
nums[9]=20000;
System.out.println(nums[1]);//10
//
int sun=0;
for (int i = 0; i < nums.length; i++) {
//nums.length
sun=sun+nums[i];//
}System.out.println(" :"+sun);// :33333
System.out.println("=============================");
char[] nums1=new char[10];
nums1[0]='A';
nums1[1]='B';
nums1[2]='C';
nums1[3]='D';
nums1[4]='E';
nums1[5]='F';
nums1[6]='G';
nums1[7]='H';
nums1[8]='I';
nums1[9]='J';
System.out.println(nums1[9]);//J
}
}
メモリ解析
配列の3種類の初期化
// :int[] a={1,2,3};
// : +
int[] arrayNums={1,2,3,4,5,6};
for (int i = 0; i < 6; i++) {
System.out.print(arrayNums[i]+"\t");
}
System.out.println();
/* :int[] a=new int[2];
a[0]=1;
a[1]=2;
*/
// : , ,
int[] arrayNums1=new int[5];
arrayNums1[0]=10;
arrayNums1[1]=100;
arrayNums1[2]=1000;
arrayNums1[3]=10000;
arrayNums1[4]=100000;
for (int i = 0; i < 5; i++) {
System.out.print(arrayNums1[i]+"\t");//10 100 1000 10000 100000
}
配列の4つの基本的な特徴
配列の結果
配列の使用
package com.YouHaoXin.array;
public class ArrayDemo03 {
public static void main(String[] args) {
// For
int[] arrays={10,20,30,40,50,60};
//
for (int i = 0; i <arrays.length; i++) {
System.out.print(arrays[i]+"\t");
}
System.out.println();
//
int sun=0;
for (int i = 0; i <arrays.length; i++) {
sun=sun+arrays[i];
}
System.out.println("sun="+sun);
//
int result=arrays[0];
for (int i = 1; i < arrays.length; i++) {
if (result<arrays[i]){
result=arrays[i];
}
}
System.out.println("max="+result);
}
}
int[] arrays = {10, 20, 30, 40, 50, 60};
// for
for (int array : arrays) {
System.out.print(array+"\t");//10 20 30 40 50 60
}
public static void main(String[] args) {
int[] arrays = {10, 20, 30, 40, 50, 60};
printArray(arrays);//10 20 30 40 50 60
System.out.println();
System.out.println("sun="+sunArray(arrays));//sun=210
}
//
//
public static void printArray(int[] arrays){
for (int i = 0; i <arrays.length ; i++) {
System.out.print(arrays[i]+"\t");
}
}
//
public static int sunArray(int[] arrays){
int sun=0;
for (int i = 0; i <arrays.length; i++) {
sun=sun+arrays[i];
}return sun;
}
public static void main(String[] args) {
int[] arrays = {10, 20, 30, 40, 50, 60};
int[] i = reverse(arrays);
printArray(i);//60 50 40 30 20 10
}
//
//
public static int[] reverse(int[] arrays){
int[] result=new int[arrays.length];
for (int i = 0,j=arrays.length-1; i <arrays.length ; i++,j--) {
result[j]=arrays[i];
}return result;
}
package com.YouHaoXin.array;
public class ArrayDemo05 {
public static void main(String[] args) {
//
/*
4 2
1,2 arrays[0][0],arrays[0][1]
3,4 arrays[1][0],arrays[1][1]
5,6 arrays[2][0],arrays[2][1]
7,8 arrays[3][0],arrays[3][1]
*/
int[][] arrays={{1,2},{3,4,},{5,6},{7,8}};
System.out.println(arrays[2][1]);//6
for (int i = 0; i <arrays.length ; i++) {
for (int j = 0; j <arrays[i].length ; j++) {
System.out.print(arrays[i][j]+"\t");//12 34 56 78
}
}
}
}
package com.YouHaoXin.sort;
import java.util.Scanner;
public class SortDemo01 {
public static void main(String[] args) {
// 1:
int[][] arrays = {{22, 66, 44}, {77, 33, 88}, {25, 45, 65}, {11, 66, 99}};
int sun = 0;
for (int i = 0; i < arrays.length; i++) {
for (int j = 0; j < arrays[i].length; j++) {
sun = sun + arrays[i][j];
}
}
System.out.println("sun=" + sun + " ");
System.out.println("==========================");
/* 2:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
*/
Scanner scanner = new Scanner(System.in);
System.out.println(" ");
int count = scanner.nextInt();
int[][] arrays1 = new int[count][count];
for (int i = 0; i <arrays1.length ; i++) {
arrays1[i][0] = 1;
arrays1[i][i] = 1;
}
for (int i = 2; i < arrays1.length; i++) {
for (int j = 1; j <= i; j++) {
arrays1[i][j] = arrays1[i - 1][j - 1] + arrays1[i - 1][j];
}
}
for (int i = 0; i < arrays1.length; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(arrays1[i][j]+"\t");
}
System.out.println();
}
配列ツールクラス:ArraysクラスArraysクラス
package com.YouHaoXin.array;
import java.util.Arrays;
public class ArrayDemo06 {
public static void main(String[] args) {
//Arrays
int[] a={5,7455,45,458,54,81,35,157};
int[] b={5, 2, 2, 2, 2, 157, 458, 7455};
// :Arrays,toString
System.out.println(Arrays.toString(a));//[5, 7455, 45, 458, 54, 81, 35, 157]
array(a);//[5, 7455, 45, 458, 54, 81, 35, 157]
System.out.println();
// :Arrays.sort
Arrays.sort(a);//
System.out.println(Arrays.toString(a));//[5, 35, 45, 54, 81, 157, 458, 7455]
// :Arrays.binarySearch
System.out.println( Arrays.binarySearch(a,1,6,55));//-5
// :Arrays.fill
Arrays.fill(a,1,5,2);
System.out.println(Arrays.toString(a));//[5, 2, 2, 2, 2, 157, 458, 7455]
// :Arrays.equals
System.out.println(Arrays.equals(a,b));//true
}
public static void array (int[] a){
for (int i = 0; i < a.length; i++) {
if (i==0){
System.out.print("[");
}
if (i==a.length-1){
System.out.print(a[i]+"]");
}else{
System.out.print(a[i]+", ");
}
}
}
}
にぶんたんさくほう
1.二分検索法は、最大インデックス値、最小インデックス値および中間インデックス値の3つを入力値と比較して検索する.
2.二分検索法を使用すると、配列はソートされた配列であり、同じ数字ではない必要があります.
package com.YouHaoXin.sort;
import java.util.Arrays;
public class SortDome03 {
public static void main(String[] args) {
//
int[] arrays={1,20,54,5,51,81,26,95};
Arrays.sort(arrays);// , ,
System.out.println(Arrays.toString(arrays));//[1, 5, 20, 26, 51, 54, 81, 95]
int search = search(arrays,26);
System.out.println(search);//7
}
public static int search (int[] arrays,int count){
int max=arrays.length-1;//
int min=0;//
for (int i = (max+min)/2; i <arrays.length && min<=max; i=(max+min)/2) {
if (count == arrays[i]){
return i;// ,
} else if(count<arrays[(max+min)/2]){
max=(max+min)/2-1;// ,
}else if(count>arrays[(max+min)/2]){
min=(max+min)/2+1;// ,
}
// , ,
}
return -1;// , -1;
}
}
疎配列
package com.YouHaoXin.array;
import java.util.Arrays;
public class ArrayDemo08 {
public static void main(String[] args) {
// 1
int[][] arrays1=new int[11][11];
arrays1[1][2]=1;
arrays1[2][3]=2;
System.out.println(" ");
/*
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
*/
//
for (int[] a:arrays1) {
for (int b: a
) {
System.out.print(b+"\t");
}
System.out.println();
}
System.out.println("=======================");
//
//1.
int sun=0;
for (int i = 0; i <arrays1.length ; i++) {
for (int j = 0; j <arrays1[i].length ; j++) {
if (arrays1[i][j]!=0){
sun++;
}
}
}
System.out.println(" :"+sun);
//2.
int[][] arrays2=new int[sun+1][3];
arrays2[0][0]=arrays1.length;// :
arrays2[0][1]=arrays1[0].length;// :
arrays2[0][2]=sun;// :
//3.
int count=0;
for (int i = 0; i <arrays1.length ; i++) {
for (int j = 0; j <arrays1[i].length ; j++) {
if (arrays1[i][j]!=0){
count++;
arrays2[count][0]=i;
arrays2[count][1]=j;
arrays2[count][2]=arrays1[i][j];
}
}
}
//4.
for (int i = 0; i <arrays2.length ; i++) {
for (int j = 0; j <arrays2[i].length; j++) {
System.out.print(arrays2[i][j]+"\t");
if (j==arrays2[i].length-1){
System.out.println();
/*
11 11 2
1 2 1
2 3 2
*/
}
}
}
System.out.println("==========================");
//
int[][] arrays3=new int[arrays2[0][0]][arrays2[0][1]];
for (int i = 1; i < arrays2.length; i++) {
arrays3[arrays2[i][0]][arrays2[i][1]]=arrays2[i][2];
}
System.out.println(" ");
for (int[] a:arrays3) {
for (int b: a
) {
System.out.print(b+"\t");
}
System.out.println();
}
}
}
package com.YouHaoXin.array;
public class ArrayDemo09 {
public static void main(String[] args) {
// 2
int[][] arrays1=new int[6][7];
arrays1[0][3]=22;
arrays1[0][6]=15;
arrays1[1][1]=11;
arrays1[1][5]=17;
arrays1[2][3]=-6;
arrays1[3][6]=39;
arrays1[4][0]=91;
arrays1[5][2]=28;
for (int[] a:arrays1
) {
for (int b:a
) {
System.out.print(b+"\t");
}
System.out.println();
/*
0 0 0 22 0 0 15
0 11 0 0 0 17 0
0 0 0 -6 0 0 0
0 0 0 0 0 0 39
91 0 0 0 0 0 0
0 0 28 0 0 0 0
*/
}
//
int sun=0;
for (int i = 0; i <arrays1.length ; i++) {
for (int j = 0; j <arrays1[i].length; j++) {
if (arrays1[i][j]!=0){
sun++;
}
}
}
//
System.out.println("sun="+sun);
int[][] arrays2=new int[sun+1][3];
arrays2[0][0]=arrays1.length;
arrays2[0][1]=arrays1[0].length;
arrays2[0][2]=sun;
int count=0;
for (int i = 0; i < arrays1.length; i++) {
for (int j = 0; j <arrays1[i].length ; j++) {
if (arrays1[i][j]!=0){
count++;
arrays2[count][0]=i;
arrays2[count][1]=j;
arrays2[count][2]=arrays1[i][j];
}
}
}
//
for (int[] a:arrays2
) {
for (int b:a
) {
System.out.print(b+"\t");
}
System.out.println();
/*
6 7 8
0 3 22
0 6 15
1 1 11
1 5 17
2 3 -6
3 6 39
4 0 91
5 2 28
*/
}
//
int[][] arrays3=new int[arrays2[0][1]][arrays2[0][1]];
for (int i = 1; i <arrays2.length ; i++) {
for (int j = 0; j <arrays2[i].length ; j++) {
arrays3[arrays2[i][0]][arrays2[i][1]]=arrays2[i][2];
}
}
for (int[] a:arrays3
) {
for (int b:a
) {
System.out.print(b+"\t");
}
System.out.println();
}
}
}