JAVA--集合(Collection)
阿新 • • 發佈:2018-11-06
集合:
----------| Collection
--------------| List 元素有序,可重複
-------------------| ArrayList 查詢速度快,增刪慢
-------------------| Linkedlist 增刪快,查詢慢
--------------| Set 元素無序,不可重複
方法:
1:add() 將指定物件儲存到容器中 add 方法的引數型別是Object 便於接收任意物件 2:addAll() 將指定集合中的元素新增到呼叫該方法和集合中 3:remove() 將指定的物件從集合中刪除 4:removeAll() 將指定集合中的元素刪除 5:clear() 清空集合中的所有元素 6:isEmpty() 判斷集合是否為空 7:contains() 判斷集合何中是否包含指定物件 8:containsAll() 判斷集合中是否包含指定集合 使用equals()判斷兩個物件是否相等 9:size() 返回集合容器的大小 10: toArray() 集合轉換陣列
樣例程式碼:
public class Demo1{
public static void main(String[] args) {
/*
Collection d = new ArrayList();
d.add("a");
d.add(12);
//System.out.println("是否新增成功"+d.add(3.14)); //add() 返回boolean
Collection c = new ArrayList();
c.add(3.14);
c.add('v ');
c.add(12);
System.out.println("集合c "+c.size());
System.out.println("集合d "+d);
//d.addAll(c);
//d.clear();
//System.out.println("刪除成功嗎?"+d.remove(12)); //remove() 返回boolean
//d.removeAll(c); // 在d中刪除與c相交的元素。
d.retainAll(c); // 在d中保留與c相交的元素,刪除其他元素
System.out.println("集合c "+c);
System.out.println("集合d "+d);
*/
/*Collection a = new ArrayList();
a.add("小明");
a.add("小樑");
System.out.println("判斷是否為空"+a.isEmpty());
System.out.println("判斷是否包含某個元素"+a.contains("笑話"));*/
Collection a = new ArrayList();
a.add("小明");
a.add("小花");
a.add("小華");
a.add("小紅");
/*
* Object[] arr = a.toArray();
for(int i=0; i<arr.length ; i++){
System.out.print(arr[i]+",");
}
System.out.println(a);
*/
Iterator it = a.iterator();
it.next();
it.remove();
System.out.println(a);
while(it.hasNext()){
/*it.next();
it.remove();*/
System.out.println("元素 :" + it.next());
}
}
}
List
方法:
1.add(int index,E element);
2.addAll(int index,Collection c);
3.get(int index);
4.indexOf(object o);
5.lastIndexOf(object o);
6.sunList(int start,int end);
7.set(int index,E element)
8.listIterator();
注意:在迭代器迭代元素的過程中,不允許用集合物件改變集合內的元素的個數,否則會丟擲異常(ConcurrentModificationException),
如需要新增和刪除元素,只能用迭代器的方法操作
9.hasPrevious(); 判斷是否存在上一個元素
10.previous() 當前指標先向上移動一個,然後再取出當前指標指向的元素。
11.next() 先取出取出當前指標指向的元素,然後指標再向下移。
樣例程式碼:
public class Demo1{
public static void main(String[] args) {
/*List list = new ArrayList();
list.add("張三");
list.add("李四");
list.add("王五");
list.add("趙六");
list.add("趙六");
//list.add(1,"xiaowang");
List list2 = new ArrayList();
list2.add("小名");
list2.add("小紅");
list.addAll(1,list2);
System.out.println(list.get(1));
System.out.println(list.indexOf("張三"));
System.out.println(list.lastIndexOf("趙六"));
System.out.println(list.subList(1,3));
list.set(1,"小云");
obj[] arr =list.toArray();
System .out.println(arr.toString);*/
List list = new ArrayList();
list.add("張三");
list.add("李四");
list.add("王五");
list.add("趙六");
list.add("趙六");
//System.out.println(list);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
ListIterator it = list.listIterator();
while(it.hasNext()){
System.out.println(it.next());
}
while(it.hasPrevious()){
System.out.println(it.previous());
}
}
}
ArrayList
ArrayList底層維護了一個object陣列實現,使用無參建構函式時,
object陣列預設容量為10,當長度不夠時,自動增長0.5倍
樣例程式碼:
// 刪除集合中的重複元素
import java.util.ArrayList;
import java.util.ListIterator;
class Book{
String name;
int id;
public Book(String name,int id){
this.name = name;
this.id = id;
}
public String toString(){
return "["+this.name+","+this.id+"]";
}
public boolean equals(Object obj){
Book book = (Book)obj;
return book.id==this.id;
}
}
public class Demo3{
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(new Book("Java程式設計",110));
list.add(new Book("php程式設計",330));
list.add(new Book("C++程式設計",440));
list.add(new Book("javascript程式設計",220));
list.add(new Book("C程式設計",110));
ListIterator it=list.listIterator();
ArrayList list1=new ArrayList();
while(it.hasNext()){
Book book = (Book)it.next();
if(!list1.contains(book)){
list1.add(book);
}
}
System.out.println(list1);
}
}
Linkedlist
方法:
1.addFirst(E e)
2.addLast(E e)
3.getFirst()
4.getLast()
5.removeFirst()
6.removeLast()