1. 程式人生 > >java從陣列中刪除陣列元素,陣列與記憶體控制

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