集合框架學習理由:java
Java是面向對象的語言,Java的大部分應用都涉及到對存儲對象的增,刪,查,改操做。數組
數組能夠用來存儲多個對象,因爲數組的長度固定,對於對象的增刪改操做很是麻煩,而集合類則可以知足咱們的需求。框架
數組和集合的區別:ide
長度學習
數組的長度固定不變,不能作更改。this
集合長度是能夠根據實際須要作更改。設計
內容code
數組存儲的必須是同一種類型的元素。對象
集合能夠存儲不一樣類型的元素,沒有限定。索引
數據類型
數組能夠存儲基本數據類型,也能夠存儲引用數據類型。
集合只能存儲引用類型,雖然不能存儲基本數據類型,可是能夠存儲基本數據類型的包裝類類型。
集合是一套框架,必須具有如下方法,且頂層父類應該設計成接口,用來完成數據的增,刪,查,改操做。
特色:
1.集合是有序的(存儲有序)
2.有索引,方便查找和修改
3.List集合可重複
4.容許存儲null值
全部方法:
添加
boolean add(Object obj) 往集合裏增長某個元素;
boolean addAll(Collection c) 將另外一個集合增長到某一個集合裏;
void add(int index, E element) 從某節點插入某一個元素;
boolean addAll(int index, Collection<? extends E> c)
刪除
void clear() 清除集合內全部元素;
boolean remove(Object o) 移除某一個元素;
boolean removeAll(Collection<?> c) 移除集合內全部元素;
Object remove(int index) 從某節點移除某一個元素;
修改
Object set(int index, E element)
遍歷
Object[] toArray()
Iterator<E> iterator()
<T> T[] toArray(T[] a)
ListIterator<E> listIterator()
ListIterator<E> listIterator(int index)
判斷
boolean contains(Object o) 是否含有某一個元素
boolean containsAll(Collection<?> c) 是否含有某個集合
boolean isEmpty() 集合是否爲空
其餘
boolean retainAll(Collection<?> c)
獲取
int size() 獲取集合長度;
int indexOf(Object o)
Object get(int index)
int lastIndexOf(Object o)
List subList(int fromIndex, int toIndex)
應用案例:
import java.awt.List;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class kookv0427 {
private static Object Idol;
public static void main(String[] args) {
// 建立容器
Collection c1 = new ArrayList();
// 建立愛豆元素對象:姓名,年齡,定位
Idol i1 = new Idol("金南俊",26,"rap");
Idol i2 = new Idol("金碩珍",28,"vocal");
Idol i3 = new Idol("閔玧其",27,"rap");
Idol i4 = new Idol("鄭號錫",26,"rap");
Idol i5 = new Idol("樸智旻",25,"vocal");
Idol i6 = new Idol("金泰亨",25,"vocal");
Idol i7 = new Idol("田柾國",23,"vocal");
Idol i8 = new Idol("方時赫",48,"PD");
Idol i9 = new Idol("方時赫",48,"PD");
// 將元素對象儲存到集合中
c1.add(i1);
c1.add(i2);
c1.add(i3);
c1.add(i4);
c1.add(i5);
c1.add(i6);
c1.add(i7);
c1.add(i8);
c1.add(i9);
// 遍歷集合
Iterator it = c1.iterator();
while (it.hasNext()) {
Object ob = it.next();
Idol i = (Idol) ob;
System.out.println(i);
}
// 去除重複元素
// 一、建立新容器
Collection c2 = new ArrayList();
// 二、遍歷舊集合
for (Object ob : c1) {
// 三、判斷新集合是否存在這個元素
if (!c2.contains(ob)) {
// 四、若是新集合不存在這個元素就儲存到新集合中
c2.add(ob);
}
}
System.out.println("--------------------------------");
// 五、遍歷新集合查看是否去除重複元素
for (Object object : c2) {
System.out.println(object);
}
System.out.println("--------------------------------");
// 六、移除方時赫!
System.out.println(c2);
System.out.println("remove:" + c2.remove(i8));
for (Object object : c2) {
System.out.println(object);
}
// 遍歷集合
// 方法一:
Object[] obs = c2.toArray(); for(Object object : obs) { System.out.println(object); } System.out.println("--------------------------------");
// 方法二:
Iterator<Object> it1 = c2.iterator(); while (it1.hasNext()) { Object object = it1.next(); System.out.println(object); } System.out.println("--------------------------------");
// 方法三:
for(Iterator<Object> iterator = c2.iterator();iterator.hasNext();System.out.println(iterator.next())); System.out.println("--------------------------------");
// 方法四:
for (int i = 0; i < c2.size(); i++) { System.out.println(((ArrayList<Object>) c2).get(i)); } System.out.println("--------------------------------");
// 方法五:
for(Object object : c2){ System.out.println(object); }
}
}
class Idol{
private String name;
private Integer age;
private String work;
@Override
public String toString() {
return "Idol [name=" + name + ", age=" + age + ", work=" + work + "]";
}
public Idol(String name, Integer age, String work) {
super();
this.name = name;
this.age = age;
this.work = work;
}
public Idol() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getWork() { return work; } public void setWork(String work) { this.work = work; }
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Idol other = (Idol) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}