جـــــــــــا فـــــ J.A.V.A.W.Y. ــــــــاوي

old_forum_users
مشاركات: 0
النقاط: 0
اشترك في: 2015-01-20 04:39:39

2 remove from dimensional arrays ٢٧‏/٢‏/٢٠١٦ ٣:٤٦ م

لو عندي 2 dimensional arrays و اريد أن احذف منها element او صف

مثلا :

 int[][] Dirt = {{4, 2}, {0, 5}, {7, 1}, {3, 3}};

و اريد امسح منها مثلا ... {4,2}

for (int z = 0; z < 3; z++) {
                           if(pos[0]==Dirt[z][0]&& pos[1]==Dirt[z][1]){
                            System.out.println("Dirt[z][0]"+Dirt[z][0] +"Dirt[z][1]"+Dirt[z][1]);
 // هنا لازم امسح الصف المحدد من الDirt                          
                }
            }

جربت ادور فالنت .. بس اكثر للي الطرق هيه للحذف من الArraylist

أتمنى لو حد عنده فكره كيف ممكن احلها

شكرا

abolkog
Site Admin
مشاركات: 4
النقاط: 10
اشترك في: 2016-01-20 04:39:39

RE: 2 remove from dimensional arrays ٢٧‏/٢‏/٢٠١٦ ٣:٤٨ م

لجافا collection مثل ال arraylist, vector ... يسهل الحذف منها

مشاكلها هى استخدام حجم كبير من ال heap memory

بالسنبة لموضوع حذف (او اضافة) عنصر من ال array ، الفكره ببساطة هى استخدام array ثانى ونقل العناصر الية مع اضافة شرط للحذف

على سبيل المثال :

public class RemoveFromArray {

	public static void main(String[] args) {
		int[] myArray = {1,2,3,4,5}; //My Array 

		int toBeRemove = 4; // I want to remove this element (4)

		int []temp = myArray; //Temp array hold the orginal data

		int arrayIndex = 0; //Used as index for the new array size for iteration over it

		//Since I want to remove elemen, so reduce the size by one
		int size = myArray.length; 
		myArray = new int[size - 1]; //clear my array 

		//Copy the data from temp back, but check if the element is equal to 4, don't copy it
		for (int i = 0; i < temp.length; i++) {
			if(temp[i] == toBeRemove)
				continue; //ignore element 4
			else{
				myArray[arrayIndex] = temp[i];
				arrayIndex++;
			}
		}

		System.out.println("Removed");

		for (int i = 0; i < myArray.length; i++) {
			System.out.println("[" + i + "] " + myArray[i] );
		}
	}
}

باستخدام نفس الفكره مع تغيرات بسيطة ، يمكن الحذف من 2d array على الشكل التالى :

public class RemoveFrom2DArray {

	public static void main(String[] args) {
		 int[][] Dirt = {{4, 2}, {0, 5}, {7, 1}, {3, 3}};
		 int [][]temp = Dirt;
		 int size = Dirt.length - 1;


		 System.out.println("The array before removing : ");
		 for (int i = 0; i < Dirt.length; i++) {
			System.out.println( Dirt[i][0] + "," + Dirt[i][1]);
		}

		 Dirt = new int[size][2];
		 int newIndex = 0;

		 //Remove element 7,1 from the array
		 for (int i = 0; i < temp.length; i++) {
			 int[] oneDimension = temp[i];

			 if(oneDimension[0] == 7 && oneDimension[1] == 1)
				 continue;
			 else{
				 Dirt[newIndex][0] = oneDimension[0];
				 Dirt[newIndex][1] = oneDimension[1];
				 newIndex++;
			 }
		}

		 System.out.println("The array After removing : ");
		 for (int i = 0; i < Dirt.length; i++) {
			System.out.println( Dirt[i][0] + "," + Dirt[i][1]);
		}


	}

}