java從陣列中刪除陣列元素,陣列與記憶體控制
通過從一個數組中刪除陣列元素到java陣列與記憶體的控制。
一、刪除陣列中的元素
這裡有個很重要的概念:java陣列一旦初始化完成,該陣列長度將不可改變。
1.刪除知道有幾個元素陣列的集合,程式碼:
public static int[] deleteArray(int v, int[] array)//刪除陣列中的值
{
int[] re_array = new int[array.length - 1];//這是確定集合中要刪除幾個的情況下
int index = 0;
for (int i : array) {
if (i != v) {
re_array[index] = i;
index++;
}
}
return re_array;
}
呼叫:
int[] array = {1, 2, 3, 4, 5, 6};
int[] delnum = (deleteArray(2, array));
for (int i = 0; i < delnum.length; i++) {
System.out.print (delnum[i] + " ");
}
結果:
1 2 3 5 6
2、刪除不知道有幾個元素陣列的集合,程式碼:
public static int getCountFromArray(int v, int[] array) {
int count = 0;
for (int i : array) {
if (i == v) {
count++;
}
}
return count;
}
public static int[] deleteArrayCount(int v, int[] array)//刪除陣列中v的值
{
int counts = getCountFromArray(v, array);
int[] re_array = new int[array.length - counts];//不知道要刪除幾個的情況下
int index = 0;
for (int i : array) {
if (i != v) {
re_array[index] = i;
index++;
}
}
return re_array;
}
呼叫:
int[] arraycount = {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5};
int[] delnums = (deleteArrayCount(2, arraycount));
for (int i = 0; i < delnums.length; i++) {
System.out.print(delnums[i] + " ");
}
結果:
1 3 4 5 6 7 8 9 1 3 4 5
二、陣列使用方法:
1.靜態初始化方法:指定每個元素的初始化值,由系統去決定其長度。如:
String [] books = new String[]{"java","C#","object-c","ios","android"};
String [] names = {"shuihu","xiyouji","sanguoyanyi","hongloumeng"};
System.out.println("books陣列的長度:"+books.length);
System.out.println("names陣列的長度:"+names.length);
2.動態初始化方法:指定陣列的長度,由系統去為陣列元素分配初始值。如:
String [] strArr = new String[9];
System.out.println("strArr陣列的長度:"+strArr.length);
備註:
陣列元素是整數型別,預設值是0;
陣列元素是浮點型型別,預設值是0.0;
陣列元素是字元型別,預設值是’\u0000’ –代表一個空格;
陣列元素是boolean型別,預設值是false;
陣列元素是引用型別,預設值是null。
要同時使用靜態和動態初始化法,即指定長度也分配值(String a[] = new String[2]{“a”,”b”}; 這樣寫會報錯)
3.java陣列無需要初始化,因為java的陣列變數是引用型別的變數,它並不是陣列本身的變數,只要讓陣列變數指向有效的陣列物件,程式中即可使用該陣列變數。如:陣列prices指向了nums陣列物件:
int [] nums = new int[]{1,5,7,9,23};
int [] prices;
prices = nums;
for(int i=0;i<prices.length;i++){
System.out.println("prices陣列的元素:"+prices[i]);
}
4.對於基本型別陣列而言,陣列元素的值直接儲存在對應的陣列元素中,因此基本型別陣列的初始化比較簡單,程式直接先為陣列分配記憶體空間,再將陣列元素的值存入到記憶體中,如:
int [] iArr; //預先開闢一些記憶體
iArr = new int[]{9,3,-6,56,98};
補充:所有的區域性變數都是放在棧記憶體裡儲存的,不管其是基本型別變數還是引用型別變數,都是儲存在各自的方法棧區中;
但是引用型別變數所引用的物件(包括陣列,普通java物件)則總是儲存在堆記憶體中。
//基本型別陣列的初始化
int [] iArrs = null;
System.out.println("iArrs列印:"+iArrs);
iArrs = new int[5];
System.out.println("iArrs長度:"+iArrs.length);
//引用型別陣列的初始化
Person [] students;
students = new Person[2];
System.out.println("students所引用的陣列長度:"+students.length);
Person zhang = new Person();
zhang.age=15;
zhang.height=170.89;
Person lee = new Person();
lee.age=19;
lee.height=176.21;
students[0]=zhang;
students[1]=lee;
lee.info();
students[0].info();
public class Person {
//引用型別陣列的初始化
public int age;
public double height;
public void info(){
System.out.println("我的年齡是"+age+"我的身高是:"+height);
}
}
java語言避免直接訪問堆記憶體中的資料可以保證程式更加健壯,如果直接訪問並修改堆記憶體中的資料,可能破壞記憶體中的資料完整性,從而導致程式crash。
int [] pos = new int[5];
for(int j=0;j<pos.length;j++){
pos[j]=(j+1)*2;
}
int a = pos[1];
int b= 20;
pos[2]=b;
Cat[] cat = new Cat[2];
cat[0]=new Cat(3.14,3);
cat[1]=new Cat(2.88,2);
Cat c1 = cat[0];
Cat c2 = new Cat(3.56,3);
cat[1]=c2;
//多維陣列
int [][] abc ;
abc = new int[4][];
for(int k=0;k<abc.length;k++){
System.out.println("abc多維陣列列印:"+abc[k]);
}
abc[0]=new int[2];
abc[0][1]=6;
for(int k=0;k<abc[0].length;k++){
System.out.println("abc[0]多維陣列列印:"+abc[0][k]);
}
//Object陣列
Object [] objArr = new Object[3];
objArr[1]=new Object[2];
Object [] objArr2 = (Object[])objArr[1];
objArr2[1]=new Object[3];
Object [] objArr3 = (Object[])objArr2[1];
objArr3[1]=new int[5];
int [] iArr1 = (int[])objArr3[1];
for(int i=0;i<iArr1.length;i++){
iArr1[i]=i*6+1;
}
System.out.println("~~~~~~~~~~~~~~`"+ ( (int[]) ((Object[]) ( (Object[])objArr[1] ) [1] )[1] ) [2] );
}
}
class Cat{
double weight;
int age;
public Cat(double weight,int age){
this.weight = weight;
this.age = age;
}
切記:java陣列一旦初始化完成,該陣列長度將不可改變。
**
新手一枚,歡迎拍磚~ ~ ~
**
相關推薦
Java從在陣列中刪除指定元素
package org.usc.action; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Test { public static
jq從陣列中刪除指定元素(根據自定義條件) 超好用的 $.grep() 方法 jQuery.grep()
轉: jQuery.grep() 什麼是jQuery.grep()? jQuery.grep()是一個查詢滿足過濾函式的陣列元素的函式。原始陣列不受影響,返回值為陣列。 用法介紹: 寫法: jQuery.grep( array, function(elementOfArr
【Leetcode】從排序陣列中刪除重複元素
題目:給定一個排序的陣列,刪除重複的位置,使每個元素只顯示一次並返回新的長度。 不要為另一個數組分配額外的空間,您必須使用常量記憶體來進行此操作。 例如, 給定輸入陣列nums = [1,1,
JAVA陣列中刪除特定元素的解決辦法
今天做基礎演算法題的時候,遇到讓把一個int型的陣列中指定的數字移除,得到新陣列的長度。乍一想,數組裡的數是不能刪除的,所以我想了很多種複雜的計算方法,但是結果都不對。後來在網上找了一個簡潔的程式碼,感覺非常受益,趕緊記錄下來。下面是我學習後寫的演算法程式碼: public
leetcode 26 Remove Duplicates from Sorted Array(在有序陣列中刪除重複元素)
題目要求: 給定排好順序的陣列,在陣列內刪除重複項,使每個元素只出現一次並返回不含重複項陣列的長度。 不要為另一個數組分配額外的空間,保持空間複雜度是O(1)。 Example: 輸入 [1,1,2] 輸出:2 輸入 [0,0,1,1,1,2,2,3,3,4] 輸出:5
java從陣列中刪除陣列元素,陣列與記憶體控制
通過從一個數組中刪除陣列元素到java陣列與記憶體的控制。 一、刪除陣列中的元素 這裡有個很重要的概念:java陣列一旦初始化完成,該陣列長度將不可改變。 1.刪除知道有幾個元素陣列的集合,程式碼: public static int[] del
java中從一個物件陣列中刪除元素和判斷物件陣列存了幾個元素的方法
//從陣列中刪除元素方法 private int arrayTotal=0; Pet[] pets=new Pet[10]; pets[1]=dog; pets[2]=cat; pets[3]=pig
JavaScript 從陣列中刪除元素方法
1.通過value值從陣列中刪除: function removeByValue(arr, val) { for (var i = 0; i < arr.length; i++) { if (arr[i] == val) { arr.spli
java 在迴圈中刪除陣列元素之二
刪除陣列中的某些元素,需要注意刪除後,整個資料的大小會變化。如果以元素下標刪除就會出錯。 錯誤示範: private JSONArray removeOther(JSONArray productList) { if (CollectionUtils.isNotEmpty(produ
vue(Js)從陣列中刪除元素
使用方法:arr.splice(arr.indexOf(ele),length):表示先獲取這個陣列中這個元素的下標,然後從這個下標開始計算,刪除長度為length的元素 這種刪除方式適用於任何js陣列 eg: <template> <div class="u
PHP從陣列中刪除元素的四種方法例項
刪除一個元素,且保持原有索引不變 使用 unset 函式,示例如下: <?php $array = array(0 => "a", 1 => "b", 2 => "c")
LeetCode-探索-初級演算法-陣列-從排序陣列中刪除重複項-java
從排序陣列中刪除重複項 給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 示例 1: 給定陣列 nums =
java演算法題:從排序陣列中刪除重複項
題目: 給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 示例1: 給定陣列 nums = [1,1,2], 函式應該返回新的長度 2
從排序陣列中刪除重複項(java)
運用快慢指標,初始的時候二者的位置一樣,當快指標指向的內容和滿指標指向的內容不一樣的時候,慢指標移動,覆蓋此時快指標的值。 class Solution { public int remove
如何把int陣列中的相同元素,從陣列中刪除。
public class demonew {public static void main(String[] args) {int[] n = { 1, 2, 3, 4, 5,3,3,3};System.out.print("刪除前:");show(n);int p=0;
集合框架(一)續 向集合中新增一個集合、陣列和List之間的相互轉換、從集合中刪除另一個集合所包含的元素
集合方法集結: import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.LinkedList; import java.util.List
jquery如何刪除陣列中的一個元素?
jquery刪除陣列中的一個元素的方法是用 splice 實現的。 舉例說明: var arrList = ['a','b','c','d']; arrList.splice(jQuery.inArray('b',arrList),1); alert(arrList); 其中j
C#LeetCode刷題記錄:從排序陣列中刪除重複項
給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 示例 1: 給定陣列 nums = [1,1,2], 函式應該返回新的長度 2,
java去除兩個陣列中相同的元素
import java.util.*; /** * 陣列去重 * <p> * Created by Cheung on 2016/4/14. */ public class Test01 { public static void main(String[] args)
js怎麼刪除陣列中重複的元素?
刪除陣列中重複的元素 剛剛看到這篇文章,就立馬過來收藏,雖然還沒看懂,希望我再研究一下面是統計陣列中重複元素的個數 var arr = []; var result = [‘2017年6月’, ‘2017年6月’, ‘2017年6月’, ‘2017年5月’, ‘2017年5月’, ‘20