Java(十二)--List的新增,修改,刪除
首先我們先建立課程類
/*
* 課程類
*/
public class Course {
public String id;
public String name;
Course(){
}
Course(String newID,String newName){
id=newID;
name=newName;
}
}
接著建立ListTest類(含main方法)用來測試。
List相當於C++中的容器List,ListTest(以下簡稱LT)類中的屬性與建構函式
/*
*ArrayList是 動態陣列,List的子介面,需要引入java.util.ArrayList
*/
public List coursesToSelect;
ListTest(){
coursesToSelect=new ArrayList();
}
ArrayList的一個方法是add(Object obj),將物件新增都尾部
add的另一個過載的方法是add(int index,Object obj),將物件新增到index位置,如果超出了陣列的範圍,會丟擲異常。如果index位置已經有了,那麼按順序將原有的依次擠下去。程式碼如下
public void testAdd(){
//建立一個課程物件,並通過add方法新增List中
Course cr1=new Course("1" ,"資料結構");
coursesToSelect.add(cr1);
Course temp=(Course)coursesToSelect.get(0);
System.out.println("添加了課程:"+temp.id+":"+temp.name);
Course cr2=new Course("2","C");
coursesToSelect.add(0,cr2);//資料結構移到1位置
Course temp1=(Course)coursesToSelect.get(0);
System.out .println("添加了課程:"+temp1.id+":"+temp1.name);
}
程式碼中用到了ArrayList中的另一個方法get(int index),該方法可以取出index位置的元素,但是返回的是Object型別的,所以需要強制型別轉換
ArrayList還支援整個陣列插進去。通過方法boolean addAll(Collection
Course[] course={new Course("3","離散數學"),new Course("4","組合語言")};
coursesToSelect.addAll(Arrays.asList(course));
Course temp2=(Course)coursesToSelect.get(3);
Course temp3=(Course)coursesToSelect.get(4);
System.out.println("添加了課程:"+temp2.id+":"+temp2.name
+":"+temp3.id+":"+temp3.name);
Course[] course2={new Course("5","高等數學"),new Course("6","大學英語")};
coursesToSelect.addAll(2,Arrays.asList(course2));
Course temp4=(Course)coursesToSelect.get(2);
Course temp5=(Course)coursesToSelect.get(3);
System.out.println("添加了課程:"+temp4.id+":"+temp4.name
+":"+temp5.id+":"+temp5.name);
當傳陣列給addAll時要先用Arrays中的asList方法,將陣列轉換成List。
List的修改
通過方法E set(int index, E element)來修改,新增方法
/*
* 修改list
*/
public void testModify(){
coursesToSelect.set(4, new Course("7","毛概"));
}
刪除
使用remove和removeAll方法
/*
* 刪除list
*/
public void testRemove(){
//Course cr=(Course)coursesToSelect.get(4);
//System.out.println("我是課程"+cr.name+"我即將被刪除");
//coursesToSelect.remove(4);
Course[] course={(Course)coursesToSelect.get(4),(Course)coursesToSelect.get(5),(Course)coursesToSelect.get(6)};
coursesToSelect.removeAll(Arrays.asList(course));
System.out.println("成功刪除");
}
如果用往add方法中傳進奇怪的東西比如字串則會丟擲異常,但程式仍然可以執行,這時我們要使用泛型程式設計,使用帶泛型會在編譯期間就進行型別檢查,如果型別不對則無法通過編譯,報錯。新建一個類testGeneric,但要注意泛型不能使用基本型別,可以新增泛型子型別的物件的例項。比如我們新建Course的子類ChildCourse,無需任何東西。
import java.util.*;
public class testGeneric {
/*
* 帶有泛型的courses
*/
public List<Course>courses;
public testGeneric(){
courses=new ArrayList<Course>();
}
/*
* 測試新增
*/
public void testAdd(){
Course cr1=new Course("1","大學語文");
courses.add(cr1);
//帶泛型會在編譯期間進行型別檢查
//courses.add("afnaf");
Course cr2=new Course("2","Java基礎");
courses.add(cr2);
}
public void testForEach(){
for(Course obj: courses){//不需要型別轉換,因為泛型是Course
Course cr=obj;
System.out.println("課程"+cr.id+":"+cr.name);
}
}
/*
* 泛型結合可以新增泛型的子型別的物件例項
*/
public void testChild(){
ChildCourse ccr=new ChildCourse();
ccr.id="3";
ccr.name="我是子型別的例項";
courses.add(ccr);
}
/*
* 泛型不能使用基本型別
*/
public void testPrimitive(){
List<Integer> list=new ArrayList<Integer>();
list.add(1);
System.out.println("基本型別必須使用包裝類"+list.get(0));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
testGeneric tg=new testGeneric();
tg.testPrimitive();
tg.testAdd();
tg.testChild();
tg.testForEach();
}
}
相關推薦
Java(十二)--List的新增,修改,刪除
首先我們先建立課程類 /* * 課程類 */ public class Course { public String id; public String name; Course(){ } Course(St
工作那些事(十一)談談碼農與農民工區別和發展之路 工作那些事(十二)如果哪一天,沒有了電腦 工作那些事(十三)再次失業
工作那些事系列連結快速通道,不斷更新中: 工作那些事(一)今年工作不好找 工作那些事(二)應聘時填寫個人資訊ABCD 工作那些事(三)什麼樣的公司能吸引你,什麼樣的公司適合你? 工作那些事(四)大公司VS小公司 工作那些事(五)談談專案資料整理和積累 工作那些事(六)談談
Java(十四)--建立視窗,新增按鈕,接受事件
建立視窗的話需要引入javax.swing.*,使用了裡面的JFrame,如下 public static void main(String[] args){ JFrame frame=new JFrame("Hello World");//括號中為視
Java多線程和並發(十二),Java線程池
span 線程 狀態 線程池大小 使用 executor java多線 png 技術 目錄 1.利用Executors創建線程的五種不同方式 2.為什麽要使用線程池 3.Executor的框架 4.J.U.C的三個Executor接口 5.ThreadPoolExecuto
selenium測試(Java)--多表單切換(十二)
generate ati nqa void char support 編寫 generated key 采用下面的例子來編寫用例 <!DOCTYPE html> <html> <head> <meta http-equiv="co
Java數據結構和算法(十二)——2-3-4樹
oid 樹的高度 n+1 tno != val post 節點數據 isp 通過前面的介紹,我們知道在二叉樹中,每個節點只有一個數據項,最多有兩個子節點。如果允許每個節點可以有更多的數據項和更多的子節點,就是多叉樹。本篇博客我們將介紹的——2-3
Java學習(十二)
sre sub utl 子接口 字符 匹配條件 流操作 數組array collect /**************************************************************/ /*在線程中更新圖形化界面,需要調用SwingUtilt
深入理解java虛擬機(十二) Java 語法糖背後的真相
它的 blog 需要 原來 ont 影響 else 階段 board 語法糖(Syntactic Sugar),也叫糖衣語法,是英國計算機科學家彼得·約翰·蘭達(Peter J. Landin)發明的一個術語。指的是,在計算機語言中添加某種語法,這些語法糖雖然不會對語言的功
JAVA基礎學習之路(十二)鏈表
args 是否為空 鏈表 == lin 一個 ava int 數據類型 定義鏈表的基本結構: class Link {//外部類 //內部類,只為鏈表類服務 private class Node {//定義節點類 private
數據結構Java版之深度優先-圖(十二)
pac show 下標 增加 ava style AD amp mat 這裏用深度優先遍歷存在矩陣裏面的圖。 深度優先利用的是棧的FIFO特性。為此遍歷到底後,可以找到最相鄰的節點繼續遍歷。實現深度優先,還需要在節點加上一個訪問標識,來確定該節點是否已經被訪問過了。 源
java基礎學習總結(十二):深入理解java內部類
內部類 內部類也是語法糖,是因為它僅僅是一個編譯時的概念,outer.java裡面定義了一個內部類inner,一旦編譯成功,就會生成兩個完全不同的.class檔案了,分別是outer.class和outer$inner.class。所以內部類的名字完全可以和它的外部類名字相同。 內部類分為四
Java開發筆記(十二)布林變數論道與或非
在程式語言的設計之初,它們除了可以進行數學計算,還常常用於邏輯推理和條件判斷。為了實現邏輯判斷的功能,Java引入了一種布林型別boolean,用來表示“真”和“假”。該型別的變數只允許兩個取值,即true和false,其中true對應真值,而false對應假值。 如同數值變數擁有加減乘
Java自學筆記(十二)
幾個關鍵字(final/static) final:可以用來修飾類,類的成員,以及區域性變數 注意:final修飾的類不能被繼承,但可以繼承其他類,俗稱“太監類”? final修飾的方法不可
劍指offer系列(十二)最小的k個數, 連續子陣列的最大和,整數中1出現的個數
最小的k個數 題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 解題思路: 思路1,這一題應用堆排序演算法複雜度只有O(nlog k),堆是完全二叉樹的一種,最大堆就是最上面的數是最大的,該方法基於二
python學習之網站的編寫(HTML,CSS,JS)(十二)----------CSS邊框的編寫
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>逆水行舟不進則退</title> </head> <b
機器學習與深度學習系列連載: 第二部分 深度學習(十二)卷積神經網路 3 經典的模型(LeNet-5,AlexNet ,VGGNet,GoogLeNet,ResNet)
卷積神經網路 3 經典的模型 經典的卷積神經網路模型是我們學習CNN的利器,不光是學習原理、架構、而且經典模型的超引數、引數,都是我們做遷移學習最好的源材料之一。 1. LeNet-5 [LeCun et al., 1998] 我們還是從CNN之父,LeCun大神在98年提出的模
Java併發(十二):CAS Unsafe Atomic 說一說Java的Unsafe類 說一說Java的Unsafe類 Java中Unsafe類詳解 Unsafe與CAS
一、Unsafe Java無法直接訪問底層作業系統,而是通過本地(native)方法來訪問。不過儘管如此,JVM還是開了一個後門,JDK中有一個類Unsafe,它提供了硬體級別的原子操作。 這個類儘管裡面的方法都是public的,但是並沒有辦法使用它們,JDK API文件也沒有提供任何關於這個類的方法的解
Java NIO系列教程(十二) Java NIO 與 IO
Java NIO系列教程(十二) Java NIO 與 IO 當學習了 Java NIO 和 IO 的 API 後,一個問題馬上湧入腦海: 我應該何時使用 IO,何時使用 NIO 呢?在本文中,我會盡量清晰地解析 Java NIO 和 IO 的差異、它們的使用場景,以及它們如何影響您的程式碼設計。 下表
java基礎(十二)抽象類(Abstract class)和介面(interface)
抽象類(Abstract class): 抽象類概述: 抽象類是對根源的抽象(即對本質的抽象與其他類的本質不同)。 抽象類表示的是這個東西是什麼。比如男人女人,,他們的抽象類就是人,所以繼承也只能繼承一個類(抽象類)(是人那就是人,不能是別的生物) 且如果有抽象的功能(吃,睡…),該