1. 程式人生 > >Java基礎_List集合

Java基礎_List集合

bsp 自定義 代碼 添加元素 iter last 如何 rgs next()


List集合

1.list集合的特點
list集合中的元素有序(存儲和取出來的元素是一致的,就是說你之前使用什麽元素存儲進去,你使用以後輸出來元素還是一樣的),元素是可以
重復的。

2.list集合繼承於Collection集合,可以使用Collection集合中的所有功能和方法,同時也有一些自己的特有方法。
(1).添加功能:
void add(int index,Object element):在指定位置添加元素
(2).獲取功能:
Object get(int index):獲取指定位置的元素
(3).列表叠代器:
ListIterator listIterator():List集合特有的叠代器
(4).刪除功能:
Object remove(int index):根據索引刪除元素,返回被刪除的元素
(5).修改功能:
Object set(int index,Object obj):根據元素索引修改元素,返回被修改的元素


3.list集合使用測試_list集合存儲自定義對象並遍歷
代碼:
public class Test {
public static void main(String[] args) {
Student s1=new Student(10,"張三");
Student s2=new Student(11,"李四");
Student s3=new Student(12,"王五");
List<Student> lt=new ArrayList<Student>();
lt.add(s1);
lt.add(s2);
lt.add(s3);
//遍歷方法1:使用叠代器遍歷
Iterator<Student> ltIterator=lt.iterator();
while (ltIterator.hasNext()) {
Student st=ltIterator.next();
System.out.println(st.getAge()+"------"+st.getName());
}
System.out.println("---------------");
//方法2:使用for循環
for(int i=0;i<lt.size();i++){
Student s=lt.get(i);
System.out.println(s.getAge()+"-------"+s.getName());
}
}
}
//輸出結果
10------張三
11------李四
12------王五
---------------
10-------張三
11-------李四
12-------王五


4.list集合的是三個子類
ArrayList:
底層結構是數組,查詢快,增刪慢
線程不安全,效率高
Vector:
底層結構是數組,查詢快,增刪慢
線程安全,效率高
LinkedList
底層結構是鏈表,查詢慢,增刪快
線程不安全,效率高

如何看怎麽使用?
看需求
需要線程安全嗎?
要:就使用Vector
不需要:ArrayList或者是linkedList
查詢多:ArrayList
增刪多:LinkedList

如果說什麽看不出來,就是用ArrayList


5.集合框架中的異常_並發修改異常以及解決方案

(1).ConcurrentModificationException:當方法檢測到對象的並發修改,但是不允許這種修改時,就拋出異常。

(2).產生的原因:
叠代器是依賴於集合而存在的,在判斷成功以後,集合中新添加了元素,但是這一個時候叠代器還不知道(就是說你在使用叠代器遍歷的時候,
叠代器就默認你已經往集合裏面添加完元素了),所以就報錯,正和一個錯誤叫兵法修改異常。

(3).解決方法:
A:使用叠代器叠代元素,使用叠代器修改元素
元素是跟在剛才叠代的元素後面的。(位置與預期不符)

B:集合遍歷元素,集合修改元素(普通for)
元素在最後添加。

6.List集合的子類的使用

(1).vector類特有的功能:
添加功能:
public void addElement(Object obj)
獲取功能:
public Object elementAt(int index)

代碼實現:
public class Test {
public static void main(String[] args) {
Vector<String> v =new Vector<String>();
v.addElement("hello");
v.addElement("world");
v.addElement("java");
//遍歷
for(int i=0;i<v.size();i++){
String s =v.elementAt(i);
System.out.println(s);
}
}
}
//輸出結果
hello
world
java

(2).LinkedList類
添加功能:
public void addFirst(Object e)
public void addLast(Object e)
獲取功能
public Object getFirst()
public Object getLast()
輸出功能
public Object removeFirst()
public Object removeLast()


7.List集合基本操作

(1).list集合去重
代碼實現:
public class Test {
public static void main(String[] args) {
List<String> lt =new ArrayList<String>();
lt.add("hello");
lt.add("world");
lt.add("java");
lt.add("world");
lt.add("java");
lt.add("world");
//去重
for(int i=0;i<lt.size();i++){
for(int j=i+1;j<lt.size();j++){
if(lt.get(i).equals(lt.get(j))){
lt.remove(j);
j--;
}
}
}
//重寫遍歷輸出
for(String s:lt){
System.out.println(s);
}
}
}

Java基礎_List集合