數組:存儲一種數據類型的集合
數組的特點:
1.只能存儲在同一種數據類型的數據
2.一旦初始化,長度固定
3.數組中的元素與元素之間的內存地址是連續的
注意:object類型的數組可以存儲任意類型的數據
public class Demo1 { public static void main(String[] args) { Object[] arr = new Object[10]; arr[1] = "abc"; arr[2] = 'a'; arr[3] = 12; } }
2.集合:集合是存儲對象的集合容器
集合比數組的優勢:
1.集合可以存儲任意類型的對象數據,數組只能存儲一種數據類型的數據
2.集合的長度是會發生變化的,數組的長度是固定的
---------|Collection 單利集合的跟接口
-------------| List 如果是實現了List接口的集合類,具備的特點,有序,可重複
-------------| Set 如果是實現了Set接口的集合類,具備特點,無需,不可重複
3.Collection接口中的方法
增加
add(E e) 添加成功返回true,添加 失敗返回false.
addAll(Collection c) 把一個集合 的元素添加到另外一個集合中去。
刪除
clear()
remove(Object o)
removeAll(Collection c)
retainAll(Collection c)
查看
size()
判斷
isEmpty()
contains(Object o)
containsAll(Collection<?> c)
迭代
toArray()
iterator()
public class Demo2 { public static void main(String[] args) { Collection c = new ArrayList(); c.add("令計劃"); c.add("徐才厚"); c.add("周永康"); System.out.println("添加成功嗎?"+c.add("郭美美")); //創建集合 Collection c2 = new ArrayList(); c2.add("徐才厚"); c2.add("郭美美"); c2.add("狗娃"); /* c.addAll(c2); // 把c2的元素的添加到c集合 中去。 */ /* 刪除方法: c.clear(); //clear()清空集合中的元素 System.out.println("刪除成功嗎?"+c.remove("美美")); // remove 指定集合中的元素刪除,刪除成功返回true,刪除失敗返回false. c.removeAll(c2); //刪除c集合中與c2的交集元素。 c.retainAll(c2); //保留c集合與c2的交集元素,其他的元素一併刪除。 */ System.out.println("查看元素個數:"+c.size()); System.out.println("集合的元素:"+ c); } }
import java.util.ArrayList; import java.util.Collection; /* 判斷 isEmpty() contains(Object o) containsAll(Collection<?> c) */ class Person{ int id; String name; public Person(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "{編號:"+this.id+" 姓名:"+ this.name+"}"; } @Override public boolean equals(Object obj) { Person p = (Person)obj; return this.id == p.id ; } //java規範: 一般重寫equlas方法我們都會重寫hashCode方法的。 @Override public int hashCode() { return this.id; } } class Dog{} public class Demo3 { public static void main(String[] args) { /*Collection c = new ArrayList(); c.add("令計劃"); c.add("徐才厚"); c.add("周永康"); System.out.println("判斷集合是否爲空元素:"+ c.isEmpty()); System.out.println("判斷集合中是否存在指定的元素:"+ c.contains("薄熙來"));*/ //集合添加自定義的元素 Collection c = new ArrayList(); c.add(new Person(110,"狗娃")); c.add(new Person(119,"狗剩")); c.add(new Person(120,"鐵蛋")); Collection c2 = new ArrayList(); c2.add(new Person(110,"狗娃")); c2.add(new Person(119,"狗剩")); c2.add(new Person(104,"陳狗剩")); System.out.println("c集合有包含c2集合中的所有元素嗎?"+ c.containsAll(c2)); //如果在現實生活中,只要身份證編號一致,那麼就爲同一個人。 System.out.println("存在該元素嗎?"+c.contains(new Person(120,"陳鐵蛋"))); // 其實contains方法內部是依賴於equals方法進行比較的。 System.out.println("集合的元素:"+ c); } }
import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; /* 迭代 toArray() */ public class Demo4 { public static void main(String[] args) { /*Collection c = new ArrayList(); c.add("令計劃"); c.add("徐才厚"); c.add("周永康"); Object[] arr = c.toArray(); //把集合中的元素全部 存儲到一個Object的數組中返回。 System.out.println("數組的元素:"+Arrays.toString(arr));*/ Collection c = new ArrayList(); c.add(new Person(110,"狗娃")); c.add(new Person(119,"狗剩")); c.add(new Person(120,"鐵蛋")); Object[] arr = c.toArray(); //需求: 把編號是110的人信息 輸出。 for(int i = 0 ; i<arr.length ; i++){ Person p = (Person) arr[i]; //從Object數組中取出的元素只能使用Object類型聲明變量接收,如果需要其他 的類型需要進行強制類型轉換。 if(p.id==110){ System.out.println(p); } } } }