Java基础_List集合

Posted nwxayyf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础_List集合相关的知识,希望对你有一定的参考价值。


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集合的主要内容,如果未能解决你的问题,请参考以下文章

Java千百问_09基础类库(002)_util包有什么功能

java 基础关于 list 集合问题

零基础学Java—List集合(三十九)

JAVA-基础(List及其子类)

Java基础__随机生成1~15之间的数字

[Java基础]List集合