集合:集合是Java提供的一種容器,可以用來存儲多個數據;
集合與數組的區別:集合的長度是可變的,數組的長度是固定的
集合中存儲的數據必須是引用類型數據;
ArrayList回顧:
public class Person {private String name;private int age;public Person() {super();}public Person(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;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}}
import java.util.ArrayList;public class Demo1 {public static void main(String[] args) {ArrayList<Integer> arr=new ArrayList<>();arr.add(1);arr.add(2);arr.add(3);arr.add(4);arr.add(5);for (int i = 0; i < arr.size(); i++) {System.out.println(arr.get(i));//1 2 3 4 5 }ArrayList<Person> arr1=new ArrayList<>();arr1.add(new Person("張三", 18));arr1.add(new Person("李四", 18));arr1.add(new Person("王二", 18));for (int i = 0; i < arr1.size(); i++) {System.out.println(arr1.get(i));}/*Person [name=張三, age=18]Person [name=李四, age=18]Person [name=王二, age=18]*/System.out.println(arr1.size());//3arr1.clear();//清空集合System.out.println(arr1.size());//0 } }
collection接口是集合的根接口,研究它應該通過他的實現類
ArrayList集合實現了List接口,List接口繼承了Collection接口,因此可以 通過ArrayList研究Collection的部分方法:
import java.util.ArrayList; import java.util.Collection;public class Demo3 {public static void main(String[] args) {fun1();fun2();fun3();}private static void fun3() {// 刪除元素Collection<String> c=new ArrayList<>();c.add("abc");c.add("def");c.add("ghi");boolean b=c.remove("abc");System.out.println(b);//true,看是否刪除成功,如果元素不存在,則刪除失敗,如果有重復元素,則刪除第一個System.out.println(c);//[def, ghi] }private static void fun2() {// 得到一個存儲對象的數組Collection<String> c=new ArrayList<>();c.add("abc");c.add("defg");c.add("123");Object[] obj=c.toArray();for (int i = 0; i < obj.length; i++) {System.out.println(obj[i]);/* abcdefg123*/}}private static void fun1() {//利用多態創建Collection類型變量Collection<String> c=new ArrayList<>();c.add("abc");//add()方法添加元素c.add("efg");boolean b=c.contains("abc");//contains方法,判斷集合是否包含某元素,返回布爾類型System.out.println(b);//trueSystem.out.println(c.size());//2//size()方法:集合的大小,存入元素個數c.clear();//清空集合中元素,集合本身仍然存在,就像抽屜里的東西拿走了,抽屜仍然存在System.out.println(c.size());//0 } }
迭代器:java有很多的集合,存的方式是不一樣的,我們要取出這些元素,可以通過一種通用的方式獲得;
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class Demo4 {public static void main(String[] args) {Collection c=new ArrayList<>();c.add("abc");c.add("jfhjkb");c.add(new Person("張三",18));//迭代器Iterator it=c.iterator();while (it.hasNext()) {Object obj = (Object) it.next();System.out.println(obj);}} }
增強性for循環:
格式:for(數據類型 變量名:數組或者集合){syso(變量名)}
還以上一個例子為例:
public class Demo4 {public static void main(String[] args) {Collection c=new ArrayList<>();c.add("abc");c.add("jfhjkb");c.add(new Person("張三",18));//增強性for循環for (Object object : c) {System.out.println(c);} /*[abc, jfhjkb, Person [name=張三, age=18]] [abc, jfhjkb, Person [name=張三, age=18]] [abc, jfhjkb, Person [name=張三, age=18]]*/ } }
?