package com.vortex.test.type;
網站建設哪家好,找創新互聯!專注于網頁設計、網站建設、微信開發、重慶小程序開發公司、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了泉山免費建站歡迎大家使用!
public class ArrayUtilE {
/**
*
* @param arr 需要改變的數組
* @param index 需要改變的下標
* @param newValue 新的值
* E 泛型: 數組對象類型:例如 String、Integer或者自定義對象類型
* @return
*/
public E[] chageValue(E[] arr,int index,E newValue){
try{
arr[index] = newValue;
}catch(Exception e){
System.out.println(e.getMessage());
}
return arr;
}
public static void main(String[] args) {
ArrayUtilString au = new ArrayUtilString();
String[] arr = {"1","2","3","4"};
System.out.println("修改前");
for(int i=0;iarr.length;i++){
String val = arr[i];
System.out.println("第"+i+"個元素 為"+val);
}
arr = au.chageValue(arr, 0, "100");
System.out.println("修改后");
for(int i=0;iarr.length;i++){
String val = arr[i];
System.out.println("第"+i+"個元素 為"+val);
}
ArrayUtilUser user_au = new ArrayUtilUser();
User[] user_arr = {new User("張三",22),new User("李四",23),new User("王五",21)};
System.out.println("修改前");
for(int i=0;iuser_arr.length;i++){
User u = user_arr[i];
System.out.println("第"+i+"個元素 name="+u.getName()+" age="+u.getAge());
}
user_arr = user_au.chageValue(user_arr, 0, new User("趙六",25));
System.out.println("修改后");
for(int i=0;iuser_arr.length;i++){
User u = user_arr[i];
System.out.println("第"+i+"個元素 name="+u.getName()+" age="+u.getAge());
}
}
}
class User{
private String name;
private int age;
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
1、什么是ArrayList :
ArrayList就是傳說中的動態數組,用MSDN中的說法,就是Array的復雜版本,它提供了如下一些好處:
(1)動態的增加和減少元素
(2)實現了ICollection和IList接口
(3)靈活的設置數組的大小
2、ArrayLis的創建以及增刪改查方法:
(1)ArrayList的創建以及元素的添加:
ArrayList 變量名?=?new?ArrayList();?//()中也可傳參。
注釋:上面是創建一個空的ArrayList列表。當我們想往列表中傳遞元素的時候是通過.add()的方法來進行賦值的。看一下下面的案例。另外要想輸出出列表中的元素的話要通過for循環遍歷:
public?class?test?{
public?static?void?main(String[]?args)?{
ArrayList?lis?=?new?ArrayList();
lis.add("tony");
lis.add("tom");
lis.add("jack");
lis.add("mary");
lis.add("even");
for(int?i=0;ilis.size();i++){
String?result?=?(String)lis.get(i);
System.out.println(result);
}
輸出結果如下:
tony
tom
jack
mary
even
(2)ArrayList中元素的刪除:
注釋:變量名.remove(int Index); //通過.remove(int Index)方法來進行刪除。
這里直接傳入要刪除元素的下標即可。當然也可以直接傳入值進行刪除。如果你覺得用下邊的方式比較麻煩那可以直接輸入要刪除項的值。
package?com.java.demo_9;
import?java.util.ArrayList;
public?class?Arraylist?{
public?static?void?main(String[]?args)?{
ArrayList?lis?=?new?ArrayList();
lis.add("tony");
lis.add("tom");
lis.add("jack");
lis.add("mary");
lis.add("even");
System.out.println("---------------------------------");
System.out.println("ArrayList原列表元素:");
for?(int?i?=?0;?i??lis.size();?i++)?{
String?result?=?(String)?lis.get(i);
System.out.println(result);
}
System.out.println("---------------------------------");
System.out.println("刪除元素后的ArrayList列表:");
lis.remove(1);
for?(int?i?=?0;?i??lis.size();?i++)?{
String?result?=?(String)?lis.get(i);
System.out.println(result);
}
System.out.println("---------------------------------");
}
}
結果:
因為我指定的是lis.remove(1);
index是從0開始起始的因此1代表第2個元素。因此刪除的是tom這個元素。
ArrayList原列表元素:
tony
tom
jack
mary
even
---------------------------------
刪除元素后的ArrayList列表:
tony
jack
mary
even
---------------------------------
(3)ArrayList中元素的修改注釋:
ArrayList方法中有一個.set方法(變量.set(index, element);)。
通過這個方法可以修改列表中的值。(index指定下標,element指定要修改后元素的值)。一起來看一下下面的示例:
package?com.java.demo_9;
import?java.util.ArrayList;
public?class?Arraylist?{
public?static?void?main(String[]?args)?{
ArrayList?lis?=?new?ArrayList();
lis.add("tony");
lis.add("tom");
lis.add("jack");
lis.add("mary");
lis.add("even");
System.out.println("---------------------------------");
System.out.println("ArrayList原列表元素:");
for?(int?i?=?0;?i??lis.size();?i++)?{
String?result?=?(String)?lis.get(i);
System.out.println(result);
}
System.out.println("---------------------------------");
System.out.println("修改后的ArrayList列表:");
//lis.remove("tom");
lis.set(2,?"lucy");
for?(int?i?=?0;?i??lis.size();?i++)?{
String?result?=?(String)?lis.get(i);
System.out.println(result);
}
System.out.println("---------------------------------");
}
}
結果:
通過下面的結果可以看出第3個下標中的值已經被改變了。本來是jack現在更改成了lucy。
ArrayList原列表元素:
tony
tom
jack
mary
even
---------------------------------
修改后的ArrayList列表:
tony
tom
lucy
mary
even
---------------------------------
(4)ArrayList中元素的查找:
注釋:.contains()是用來判斷一個元素是否包含在另一個元素中的。
所以這里是判斷查找的元素是否包含在列表中。返回值方面我直接用的是打印的方法。也可以通過boolean,return的方式返回。
案例1:
import?java.util.ArrayList;
public?class?tes?{
public?static?void?main(String[]?args)?{
ArrayList?lis?=?new?ArrayList();
lis.add("tony");
lis.add("tom");
lis.add("jack");
lis.add("mary");
lis.add("even");
if(lis.contains("vivian")){
System.out.println("包含此元素!");
}
else{
System.out.println("該元素不存在!");
}
}
}
結果:
返回結果參照代碼。找到了就打印“包含此元素,沒找到就顯示元素不存在。
案例2:
package?com.java.demo_9;
import?java.util.ArrayList;
public?class?ArrLis?{
public?static?void?main(String[]?args)?{
ArrayList?list?=new?ArrayList();
list.add("tony");
list.add("tom");
list.add("jack");
list.add("kevin");
for(int?i=0;ilist.size();i++){
String?result?=(String?)list.get(i);
System.out.println(result);
}
System.out.println("+++++++++++++++++++++++++++++++++++++");
ArrayList?list1?=?new?ArrayList();
for(int?i=0;ilist.size();i++){
String?res?=?(String)list.get(i);
if(list.contains("kevin")){
list1.add("kevin");
System.out.println(list1);
break;
}else{
System.out.println("沒找到該元素!");
break;
}
}
}
}
結果:
因為列表中中包含"kevin"這個元素所以返回值為該元素。如果列表中沒有該元素返回值為“沒有找到該元素!”。
注意事項:我是重新設定了一個新空ArrayList(list1)。目的就是為了如果找到該值把這個值直接放到新的ArrayList中。另外if,else用了2次break。就是只要找到或者沒找到就退出的意思。如果不這么寫那么for循環每找一次結果就會打印一次,這顯然是不必要的。
可以使用如下的代碼:
arrays.aslist(yourarray).contains(yourvalue)
但這并不適用于基本數據類型的數組。
在java8之后,你可以使用stream來檢測int,double,long類型的數組是否包含某個數值。(分別用intstream,
doublestream和longstream),例如:
int[]
a
=
{1,2,3,4};
boolean
contains
=
intstream.of(a).anymatch(x
-
x
==
4);
對于數組的一些操作,你可以上秒秒學了解相關的知識。
配合內存分布圖
當沒有注釋的代碼時,此時在main方法中調用change方法,然后將數組作為參數傳遞,此時傳遞的是地址值。雖然main方法中的arr和change方法參數里的arr看似名稱一致,但是實際在棧中會有兩份。就和上圖一樣。
本來main方法中的arr就是指向0x1122地址的數組,然后將這個地址賦給了change方法參數里的arr,所以此時change方法里的arr也指向了0x1122地址的數組。所以如果對這個數組里的內容進行改動,通過兩個arr訪問都是一樣的。所以通過change改動數組內容,main方法中也能夠看到修改后的內容
如果加上注釋的那一行代碼。因為重新new一個新的數組,然后將其地址值改成了0x3344,所以change方法里的arr不再指向0x1122,所以你無論怎么修改內部數據,和main方法中的arr也沒有關系
如上做一個簡單的總結
就比如有兩個人共用一個衛生間。一個人很邋遢給廁所里搞得很臟,另一個人進去就能看到廁所很臟
如果兩個人各有一個衛生間。一個人哪怕在廁所生火做飯,另一個人也看不到
public static void main(String[] args){ /** * 1、Java定義一個一維數組,并給每個元素賦值為數組下標的值,并顯示 */ int[] arr = new int[10]; for (int i = 0; i arr.length; i++){ arr[i] = i; System.out.println(i + "," + arr[i]); }} public static void main(String[] args){ /** * 2、修改上述程序,將數組的賦值改為從鍵盤上輸入的10個整數 */ int[] arr = new int[10]; System.out.println("請依次輸入10個整數"); for (int i = 0; i arr.length; i++){ System.out.println("請輸入第" + (i + 1) + "個整數:"); Scanner input = new Scanner(System.in); arr[i] = Integer.parseInt(input.nextLine()); } for (int i = 0; i arr.length; i++){ System.out.println(i + "," + arr[i]); } /** * 3、修改上述程序,添加代碼,實現從10個數中找到最大值和最小值,并顯示。 */ int max = arr[0]; // 將數組的第一個元素賦給max int min = arr[0]; // 將數組的第一個元素賦給min for (int i = 1; i arr.length; i++){ // 從數組的第二個元素開始賦值,依次比較 if (arr[i] max){ // 如果arr[i]大于最大值,就將arr[i]賦給最大值 max = arr[i]; } if (arr[i] min){ // 如果arr[i]小于最小值,就將arr[i]賦給最小值 min = arr[i]; } } System.out.println("最大值是:" + max); System.out.println("最小值是:" + min); /** * 4、修改上述程序,添加代碼,去掉最大值和最小值,然后計算剩下的數的平均值,并顯示 */ int sum = 0; for (int i = 0; i arr.length; i++){ sum += arr[i]; } sum = sum - max - min; // 去掉最大值和最小值的總和 double average = sum / (arr.length - 2); System.out.println("平均值:" + average);}
名稱欄目:Java代碼改變數組元素 java定義變長數組
文章源于:http://vcdvsql.cn/article34/hhhjpe.html
成都網站建設公司_創新互聯,為您提供網站建設、微信小程序、手機網站建設、靜態網站、網站內鏈、網站營銷
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯