天天看點

Java集合架構1:集合架構概述

集合的由來

數組的長度是固定的,當添加的元素超過了數組的長度時需要對數組重新定義,太麻煩,Java内部給我們提供了集合類,能存儲任意對象,長度是可以改變的,随着元素的增加而增加,随着元素的減少而減少。

數組和集合的差別

差別1:

(1)數組既可以存儲基本資料類型,也可以存儲引用資料類型,基本資料類型存儲的是值,引用資料類型存儲的是位址值。

(2)集合隻能存儲引用資料類型(對象)集合中也可以存儲基本資料類型,但是在存儲的時候會自動裝箱變成對象。

差別2:

(1)數組的長度是固定的,不能自動增長。

(2)集合的長度是可變的,可以根據元素的增加而增長。

數組和集合應用場景

(1)如果元素個數是固定的推薦用數組。

(2)如果元素個數不是固定的推薦使用集合。

Java集合架構1:集合架構概述
package Day15集合架構.Day_01;

public class Demo1_Array {
public static void main(String[] args){
Object ob;
Student[] arr = new Student[5];
arr[0] = new Student("張三",23);
arr[1] = new Student("李四",24);
arr[2] = new Student("王武",35);
for(int i = 0; i < arr.length; i ++){
System.out.println(arr[i]);
}
}
}


package Day15集合架構.Day_01;

public class Student {
private String name;
private int age;

public Student() {
super();
}

public Student(String name, int age) {
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;
}

@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
           
Java集合架構1:集合架構概述
package Day15集合架構.Day_03;

import java.util.ArrayList;
import java.util.Collection;

public class Demo2_Collection {
/*
A:案例示範

基本功能示範
boolean add(E e)
boolean remove(Object o)
void clear()
boolean contains(Object o)
boolean isEmpty()
int size()

B:注意:

collectionXxx.java使用了未經檢查或不安全的操作。
注意:要了解詳細資訊,請使用-Xlint:unchecked重新編譯。
java編譯器認為該程式存在不安全隐患
溫馨提示:這不是編譯失敗,是以先不用理會,等學會了泛型就知道了。
add方法如果是List集合一直都傳回true,因為List集合中是可以存儲重複元素的。
如果是Set集合當存儲重複元素的時候,就傳回false

ArrayList的父類的父類重寫toString方法,是以在列印對象的引用的時候,輸出結果不是Object類中toString的結果。
*/
/*public void demoAdd(){
Collection c = new ArrayList();//父類引用指向子類對象
boolean b1 = c.add("abc");
boolean b2 = c.add("true");//自動裝箱new Boolean("true")
boolean b3 = c.add(100);
System.out.println(c);

}*/
/* public void demoRemove(){
Collection c = new ArrayList();
c.add("a");
c.add("b");
c.add("c");
c.add("d");
System.out.println(c);
c.remove("d");//删除指定的元素
System.out.println(c);
}*/
/* public void demoClear(){
Collection c = new ArrayList();
c.add(100);
c.add("q");
c.add(89);
System.out.println(c);
c.clear();
System.out.println(c);
}*/
public void dmeoContains(){
Collection c = new ArrayList();
c.add("a");
System.out.println(c.contains("a"));
System.out.println(c.contains("b"));
c.clear();
System.out.println(c.isEmpty());
System.out.println(c.size());
}
public static void main(String[] args){
Demo2_Collection dc = new Demo2_Collection();
// dc.demoAdd();
// dc.demoRemove();
//dc.demoClear();
dc.dmeoContains();
}

}

           
package Day15集合架構.Day_04;

import java.util.ArrayList;
import java.util.Collection;

public class Demo3_Collection {
/*
* A:集合的周遊
* 其實就是依次擷取集合中的每一個元素。
*
* B:案例示範
* 把集合轉成數組,可以實作集合的周遊
* toArray
* */
public static void main(String[] args){
Collection c = new ArrayList();
/* c.add("a");
c.add("b");
c.add("c");
c.add("d");
Object[] arr = c.toArray();//将集合轉換成數組
for(int i = 0; i < arr.length; i ++) {
System.out.println(arr[i]);
}*/

c.add(new Student("張三",23));//Object obj = new Student("張三",23)
c.add(new Student("李四",24));

Object[] arr = c.toArray();
for(int i = 0; i < arr.length; i ++) {//向上轉型是父類不能使用子類特有的屬性和方法
//System.out.println(arr[i].getName());
System.out.println(arr[i]);
Student s = (Student)arr[i];//向下轉型
System.out.println(s.getName() + "........." + s.getAge());
}
}
}

           
package Day15集合架構.Day_05;

import java.util.ArrayList;
import java.util.Collection;

public class Demo4_collectionAll {
/*
A:案例示範

帶All的功能示範
boolean addAll(Collection c)
boolean removeAll(Collection c)
boolean containsAll(Collection c)
boolean retainAll(Collection c)取交集
*/
/*public void demoAddAll(){
Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");

Collection c2 = new ArrayList();
c2.add("a");
c2.add("b");
c2.add("c");
c2.add("d");

c1.addAll(c2);//将c2中的每一個元素添加到c1中
System.out.println(c1);
}*/

/* public void demoRemoveAll(){
Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");

Collection c2 = new ArrayList();
c2.add("a");
c2.add("b");


c1.removeAll(c2);//将c1和c2的交集從c1中移除
System.out.println(c1);
}*/

/*public void demoContainsAll() {
Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");

Collection c2 = new ArrayList();
c2.add("E");
c2.add("B");

System.out.println(c1.containsAll(c2));//判斷調用的集合是否包含傳入的集合。包含傳回true,不包含傳回false
}*/
public static void main(String[] args) {
Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");

Collection c2 = new ArrayList();
c2.add("E");
c2.add("B");
//取交集,如果調用的集合改變就傳回true(c1存儲的對象改變了),如果調用的集合不變就傳回false(就是c1存儲的對象沒變)
boolean b1 = c1.retainAll(c2);//取交集
System.out.println(b1);

Collection c3 = new ArrayList();
c3.add("a");
c3.add("b");
c3.add("c");
c3.add("d");

boolean b2 = c1.retainAll(c3);
System.out.println(b2);
}
}