集合容器

shanglanqu9924發表於2018-09-11

Collection:
–list–對元素增刪改查
新增元素:list.add(obj)
插入元素:list.add(index,obj)
刪除元素:list.remove(index)
修改元素:list.set(index,obj)
獲取元素:list.get(index)
獲取子列表: list.subList(index1,index2)包含1不包含2

想要在list中準確獲取迭代器物件,就使用LsitIterator。
例子:
ListIterator it =list listIterator();
while it.hasnext()
object obj = it.next();
if(obj.equals(“xxxx”)
{
it.add(index,”xxxx”)
}

list下的容器:
|–Vector 內部是陣列資料結構, 是同步的(幾乎不用了)
|–ArrayList 內部是陣列資料結構,是不同步的。替代了Vector
|–LinkedList 內部是連結串列結構,是不同步的。

包裝類:
為了方便操作基本資料型別值,將其封裝成了物件,在物件中定義了屬性和行為,豐富了該資料的操作。
包裝類的操作:進位制轉換,型別轉換。
十進位制—-》其他進位制:
System.out.println(Integer.toBinaryString(60));//60轉換成二進位制
System.out.println(Integer.toOctalString(60));//60轉換成八進位制
System.out.println(Integer.toHexString(60));//60轉換成十六進位制
System.out.println(Integer.toString(60,x));//60轉換成任意x進位制
System.out.println(Integer.ParseInt(“110”,2));//110轉換成2進位制
Integer 的方法:
equals,對比值大小是否相等
compareTo 對比值的大小,大,返回1,小,返回-1
Integer 新特性,裝箱。
什麼時候自動裝箱:
型別不匹配的時候。

linklist、
addfirst 頭插
Linklist link =new linklist;
iterator it = link.iterator();
link.getfirst:獲取第一個但不刪除,如果連結串列為空,丟擲異常
link.peekfirst:獲取第一個但不刪除,如果連結串列為空,返回null
link.removefirst:獲取第一個並刪除。如果連結串列為空,丟擲異常
link.pollfirst:獲取第一個並刪除。如果連結串列為空,返回null
link.getlast()獲取最後一個,如果連結串列為空,丟擲異常
link.peeklast:獲取最後一個但不刪除,如果連結串列為空,返回null
link.removelast:獲取最後一個並刪除。如果連結串列為空,丟擲異常
link.polllast:獲取最後一個並刪除。如果連結串列為空,返回null
–用linkedlist 建立 堆疊和佇列。
堆疊:先進後出,用add進棧,用removelast出棧
佇列:先進先出,用add 進佇列,用removefirst 出佇列

在使用迭代器時,可以新建一個當前物件為父類,強轉迭代器next方法的變數,用來迭代、
例::
arraylist al= new Arraylist<>();
Iterator it = al.iterator();
person p=(person)it.next();
此時p就是迭代器,可以呼叫person的方法,以此讀取al中的每個資料結構。

Set(元素不可重複,無序)
方法與Collection一樣。
有兩個常用的物件:
||–HashSet:(內部資料結構是雜湊表)不同步。由雜湊表支援。不保證set 的迭代順序。不保證順序不變
為了保證自定義物件不重複,需要在自定義物件中複寫hashCode和equals方法。
public int hashCode(){
return name.hashCode()+age;
}
public boolean equals(Object obj) {
// TODO Auto-generated method stub
Pperson p =(Pperson)obj;
return this.name.equals(p.name)&& this.getAge()==p.getAge();;
}
如果物件的hashCode 不同,那麼不用判斷equals方法,直接儲存到雜湊表中。
如果物件的HashCode相同,那麼判斷equals方法,是否為true。
如果為true,視為相同元素,不存。否則存。
||–TreeSet:可以對Set集合中的元素進行排序,是不同步的。
判斷元素唯一性的方法:根據比較方法的返回結果是否是0,是0就是相同元素,不存。
public int compareTo(Object o) {
Treeperson pTreeperson=(Treeperson)o;
int temp=this.age-pTreeperson.getAge();
if(temp==0)
{
return this.name.compareTo(pTreeperson.getName());
}
else
{
return temp;
}
}
讓元素具備比較功能,只需要實現Comparable介面,複寫CompareTo方法。
如果不要按照物件中具備的自然順序進行排序,如果物件中不具備自然順序,
我們可以使用TreeSet集合的第二種排序方式:
讓集合自身具備比較功能。—Comparator比較器implements Comparator
比較器在初始化TreeSet物件的時候設定。TreeSet ts= new TreeSet(new Comparator)

MAP

相關文章