設計網(wǎng)站賣錢企業(yè)網(wǎng)站模板源碼
???Collection:
? ? ? ? - List(有序【指的是存儲和取出的順序是一致的】且可以發(fā)生重復,且有索引的概念)
? ? ? ? ? ? - ArrayList: 底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢,線程不安全的,效率高。
? ? ? ? ? ? - Vector:底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢,線程安全的,效率低
? ? ? ? ? ? ? ?【即便Vector是線程安全的,今后也不用,我們會將不安全的ArrayList變成安全的】
? ? ? ? ? ? - LinkedList:底層數(shù)據(jù)結(jié)構(gòu)是雙鏈表,增刪快,查詢慢,線程不安全的,效率高。
? ? ? ? - Set(元素唯一且無序)
? ?Collection成員方法:
? ? ? ? boolean add(E e)? 在集合添加一個元素
? ? ? ? boolean remove(Object o)? 從集合刪除一個元素,如果有重復,刪除左邊第一個
? ? ? ? void clear()? ?清空集合中所有元素
? ? ? ? boolean contains(Object o)? ?判斷集合中是否包含某個元素
? ? ? ? boolean isEmpty()? ? ? ? ? ? ? ?判斷集合是否為空
? ? ? ? int size()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?獲取集合中元素個數(shù)
參考使用:
public class CollectionDemo1 {public static void main(String[] args) {Collection c1 = new ArrayList();System.out.println("c1: " + c1); //重寫的toString()方法來自AbstractCollection類中System.out.println("-----------------------------");//boolean add(Object e) 向集合中添加元素c1.add(100); // 涉及到自動裝箱 將基本數(shù)據(jù)類型的值包裝成對應的包裝類類型c1.add("hello");c1.add(true);c1.add(11.23);c1.add(100);System.out.println("c1: " + c1);//boolean remove(Object o) 從集合中刪除某個元素c1.remove(100); //若刪除的元素有重復的存在,只會刪除最左邊的第一個相同的元素System.out.println("c1: " + c1);//void clear() 清空集合中所有的元素c1.clear();System.out.println("c1: " + c1);//boolean contains(Object o) 判斷集合中是否包含某個元素System.out.println(c1.contains("helldasdao"));//boolean isEmpty() 判斷集合中是否有元素存在System.out.println(c1.isEmpty());//int size() 獲取集合中的元素個數(shù)System.out.println(c1.size());}
}
List接口中特有的成員方法:(因為List集合有索引的概念,針對索引的操作多了一些方法)
? ? ? ? void add(int index,E element) ?指定位置索引添加元素到集合中
? ? ? ? E remove(int index) ? ? ? 指定索引刪除某個元素,返回被刪除的元素
? ? ? ? E get(int index) ? ? ? ? ? ? ? 根據(jù)索引獲取集合中的元素對象
? ? ? ? E set(int index,E element) ?指定位置索引,修改元素,返回原本位置上的元素對象
? ? ? ? ListIterator listIterator() ? ?List集合專有的迭代器
參考使用:
注意:?//一個迭代器對象只有一個游標可以移動
? ? ? ? ? ?//ListIterator listIterator() List集合專有的迭代器
? ? ? ? ? //listIterator()通過觀察子類源碼發(fā)現(xiàn),底層是返回了一個ListItr類的對象
? ? ? ? ? //ListItr類是繼承自Itr類,也擁有hasNext()和next()方法
? ? ? ? ? ?//ListItr類中有hasPrevious()和previous()方法
? ? ? ? ? ?//hasPrevious(): 判斷前一個位置上是否有元素
? ? ? ? ? ?//previous(): 將游標向前移動一位,并獲取位置上的元素
public class ListDemo2 {public static void main(String[] args) {//創(chuàng)建一個List集合對象List li1 = new ArrayList();//創(chuàng)建元素對象Student s1 = new Student("aaa", 12);Student s2 = new Student("bbb", 13);Student s3 = new Student("ccc", 14);Student s4 = new Student("fff", 15);//將元素添加到List集合中l(wèi)i1.add(s1);li1.add(s2);li1.add(s3);li1.add(s4);System.out.println("li1: "+li1);System.out.println("=======================================");//void add(int index,Object element) 指定位置索引添加元素到集合中Student s5 = new Student("qqq", 18);//需求:將s5添加在s2和s3之間li1.add(2,s5);Student s6 = new Student("zzz", 20);li1.add(5,s6); // 緊跟著最后一個元素后面的索引可以賦值,其他的索引不行System.out.println("li1: "+li1);
// System.out.println("=======================================");//E remove(int index) 指定索引刪除某個元素,返回被刪除的元素
// Object o = li1.remove(2);
// System.out.println("li1: "+li1);
// System.out.println("o: "+o);System.out.println("=======================================");//Object get(int index) 根據(jù)索引獲取集合中的元素對象Object o = li1.get(2);System.out.println("li1: "+li1);System.out.println(o);System.out.println("=======================================");//Object set(int index,Object element) 指定位置索引,修改元素,返回原本位置上的元素對象Student s7 = new Student("www", 31);Object o2 = li1.set(2, s7);System.out.println("li1: "+li1);System.out.println("o2: "+o2);System.out.println("=======================================");//一個迭代器對象只有一個游標可以移動//ListIterator listIterator() List集合專有的迭代器//listIterator()通過觀察子類源碼發(fā)現(xiàn),底層是返回了一個ListItr類的對象//ListItr類是繼承自Itr類,也擁有hasNext()和next()方法ListIterator listIterator = li1.listIterator();while (listIterator.hasNext()){Object o1 = listIterator.next();System.out.println(o1);}System.out.println("__________________________________________");//ListItr類中有hasPrevious()和previous()方法//hasPrevious(): 判斷前一個位置上是否有元素//previous(): 將游標向前移動一位,并獲取位置上的元素//要想倒著遍歷,必選先將迭代器的游標移動到最后一位。while (listIterator.hasPrevious()){Object o3 = listIterator.previous();System.out.println(o3);}}
}
?ArrayList:(包含了List的一些用法)
public class ArrayListTest2 {public static void main(String[] args) {ArrayList list1 = new ArrayList();Student s1 = new Student("小黑", 18);Student s2 = new Student("小白", 17);Student s3 = new Student("小花", 18);Student s4 = new Student("小紅", 19);Student s5 = new Student("小黑", 18);list1.add(s1);list1.add(s2);list1.add(s3);list1.add(s4);list1.add(s5);System.out.println("list1: " + list1);
Vector類中的特有功能:
? ? public void addElement(E obj) ?從效果上來看和調(diào)用add方法一樣,都是在集合末尾處添加元素
? ? public E elementAt(int index) ? 根據(jù)索引獲取元素 , 從效果上來看和調(diào)用get方法一樣
? ? public Enumeration elements() ?獲取一個存儲所有集合元素的容器,類似于迭代器
Vector中Enumeration elements()參考用法如下:
//public Enumeration elements() 獲取一個存儲所有集合元素的容器,類似于迭代器// 從效果上來看和使用迭代器一樣,都是先判斷下一個位置是否有元素,然后再獲取,將來就使用迭代器來替代它Enumeration elements = vector.elements();while (elements.hasMoreElements()){Object o = elements.nextElement();System.out.println(o);
? LinkedList類特有功能:
? ? ? ? public void addFirst(E e)及addLast(E e)
? ? ? ? public E getFirst()及getLast()
? ? ? ? public E removeFirst()及public E removeLast()
參考用法:
public class LinkedListDemo1 {public static void main(String[] args) {LinkedList list1 = new LinkedList();list1.add("hello");list1.add("world");list1.add("java");list1.add("hadoop");list1.add("hello");Iterator iterator = list1.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}System.out.println("===================================");//public void addFirst(E e)及addLast(E e)list1.addFirst("小美");list1.addLast("小強"); // add()System.out.println("list1:" + list1);System.out.println("===================================");//public E getFirst()及getLast()System.out.println(list1.getFirst());System.out.println(list1.getLast());System.out.println("===================================");//public E removeFirst()及public E removeLast()System.out.println(list1.removeFirst());System.out.println(list1.removeLast());System.out.println("list1:" + list1);}
}
?