呼和浩特企业网站建设,网络公司怎么优化网站,wordpress 修改搜索,上海定制网站开发营销推广6 List集合
List系列集合#xff1a;添加的元素是有序#xff0c;可重复#xff0c;有索引 ArrayList: 添加的元素是有序#xff0c;可重复#xff0c;有索引LinkedList: 添加的元素是有序#xff0c;可重复#xff0c;有索引Vector #xff1a;是线程安全的#xff…6 List集合
List系列集合添加的元素是有序可重复有索引 ArrayList: 添加的元素是有序可重复有索引LinkedList: 添加的元素是有序可重复有索引Vector 是线程安全的速度慢开发中很少使用
6.1 List集合概述和特点
List集合概述 1、有序集合(也称为序列)用户可以精确控制列表中每个元索的插入位置。用户可以通过整数索引访问元素,并获取列表中的元素 2、与Set集合不同List集合允许重复的元素
List集合特点 1、有序: 存储和取出的元素顺序一致 2、可重复: 存储的元素可以重复
package ceshi;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class ListDemo {public static void main(String[] args) {//创建集合对象ListString list new ArrayList();//添加元素list.add(java);list.add(天下);list.add(无敌);list.add(java);System.out.println(list); //[java, 天下, 无敌, java]//迭代器遍历IteratorString it list.iterator();while(it.hasNext()) {String s it.next();System.out.println(s);/*java天下无敌java*/}}
}6.2 List集合的特有方法
方法名说明public void add(int index,E element)该集合中的指定位置上插入元素public E remove(int index)删除列表中指定位置的元素返回被删除的元素public E set(int index,E element)修改指定索引的元素返回被修改的元素public E get(int index)返回集合中指定位置的元素
package ceshi;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class ListDemo {public static void main(String[] args) {//创建集合对象ListString list new ArrayList();//添加元素list.add(java);list.add(天下);list.add(无敌);list.add(java);System.out.println(list); //[java, 天下, 无敌, java]//1、public void add(int index,E element) 该集合中的指定位置上插入元素list.add(1,javase);System.out.println(list); //[java, javase, 天下, 无敌, java]//2、public E remove(int index) 删除列表中指定位置的元素返回被删除的元素System.out.println(list.remove(1)); //javaseSystem.out.println(list); //[java, 天下, 无敌, java]//3、public E set(int index,E element) 修改指定索引的元素返回被修改的元素System.out.println(list.set(0,java1)); //javaSystem.out.println(list); //[java1, 天下, 无敌, java]//4、public E get(int index) 返回集合中指定位置的元素System.out.println(list.get(2)); //无敌//for循环遍历for(int i0;i list.size();i) {//5,public E get(int index) 返回集合中指定位置的元素String s list.get(i);System.out.println(s);/*java1天下无敌java*/}}
}案例 测试类
package ceshi;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class ListDemo {public static void main(String[] args) {//2、创建集合对象ListStudent list new ArrayListStudent();//3、创建学生对象Student s1 new Student(y1,10);Student s2 new Student(y2,20);Student s3 new Student(y3,30);//4、学生对象添加到集合list.add(s1);list.add(s2);list.add(s3);//5、遍历集合迭代器方法IteratorStudent it list.iterator();while(it.hasNext()) {Student s it.next();System.out.println(s.getName(),s.getAge());/*y1,10y2,20y3,30*/}//5、遍历集合for循环for(int i0;ilist.size();i) {Student ss list.get(i);System.out.println(ss.getName(),ss.getAge());/*y1,10y2,20y3,30*/}}
}6.3 ListIterator迭代器
Lstlterator:列表迭代器 通过List集合的listterator()方法得到所以说它是List集合特有的迭代器用于允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置 常用方法
方法名说明list.listIterator()得到 listIterator 迭代器E next()返回迭代中的下一个元素boolean hasNext()如果迭代具有更多元素则返回trueE previous() [ˈpriːviəs]返回列表中的上一个元素boolean hasPrevious()如果此列表迭代器在相反方向遍历列表时具有更多元索则返回truevoid add(E e)将指定的元索插入列表
package ceshi;import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;public class ListIteratorDemo {public static void main(String[] args) {ListString list new ArrayList();list.add(java);list.add(python);list.add(scala);//通过list集合的listIterator() 方法得到迭代器/*ListIteratorString lit list.listIterator();while(lit.hasNext()) {String s lit.next();System.out.println(s);*//*javapythonscala*//*}System.out.println(---------);//逆向遍历*//*E previous0 返回列表中的上一个元素boolean hasPrevious() 如果此列表迭代器在相反方向遍历列表时具有更多元索则返回true*//*while(lit.hasPrevious()) {String s lit.previous();System.out.println(s);*//*scalapythonjava*//*}*///获取列表迭代器ListIteratorString lit list.listIterator();while(lit.hasNext()) {String s lit.next();if(s.equals(java)) {lit.add(world);}}System.out.println(list); //[java, world, python, scala]}
}6.4 foreach增强for循环
增强for简化数组和Collection集合的遍历
实现Iterable接口的类允许其对象成为增强型 for语句的目标它是JDK5之后出现的其内部原理是一个Iterator迭代器格式
for(元素类型 变量名: 数组名或collection集合){ }
//范例
int[] arr {1,2,3,4,5};
for(int i : arr) {System.out.println(i);
}范例
package ceshi;import java.util.ArrayList;
import java.util.List;public class ForDemo {public static void main(String[] args) {//int类型数组int[] arr {1,2,3,4,5};for(int i : arr) {System.out.println(i);/*12345*/}//String类型数组String[] strArray {java,python,scala};for(String s : strArray) {System.out.println(s);/*javapythonscala*/}//集合ListString list new ArrayList();list.add(y1);list.add(y2);list.add(y3);for(String lt:list) {System.out.println(lt);/*y1y2y3*/}//判断内部原理是一个Iterator迭代器for(String s:list) {if(s.equals(y1)) {list.add(y4); //ConcurrentModificationException:并发修改异常}}}
}6.5 案例List集合存储学生对象用三种方式遍历 测试类
package ceshi;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class ListDemo {public static void main(String[] args) {ListStudent list new ArrayList();Student s1 new Student(y1,10);Student s2 new Student(y2,20);Student s3 new Student(y3,30);list.add(s1);list.add(s2);list.add(s3);//迭代器方式IteratorStudent it list.iterator();while(it.hasNext()) {Student s it.next();System.out.println(s.getName(),s.getAge());}System.out.println(----------);//for带索引方式for(int i 0;ilist.size();i) {Student s list.get(i);System.out.println(s.getName(),s.getAge());}System.out.println(----------);//增强forfor(Student s: list) {System.out.println(s.getName(),s.getAge());}}
}6.6 List集合子类特点
ArrayList底层数据结构数组实现查询快增删慢LinkedList底层数据结构链表实现查询慢增删快范例分别用ArrayList和LinkedList存储字符串并遍历
package ceshi;import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;public class ListDemo {public static void main(String[] args) {//1、创建ArrayList集合对象ArrayListString arraylist new ArrayList();arraylist.add(java);arraylist.add(python);arraylist.add(scala);//增强forfor(String s: arraylist) {System.out.println(s);}System.out.println(-------);//普通for循环for(int i0;i arraylist.size();i) {String s arraylist.get(i);System.out.println(s);}System.out.println(-------);//迭代器的方式IteratorString it arraylist.iterator();while(it.hasNext()) {String s it.next();System.out.println(s);}System.out.println(-------);//2、创建LinkedList集合对象LinkedListString linkedList new LinkedList();linkedList.add(a);linkedList.add(b);linkedList.add(c);//增强forfor(String s:linkedList) {System.out.println(s);}System.out.println(-------);//普通forfor(int i0;i linkedList.size();i) {String s linkedList.get(i);System.out.println(s);}System.out.println(-------);//迭代器IteratorString it1 linkedList.iterator();while(it1.hasNext()) {String s it1.next();System.out.println(s);}}
}6.7 LinkedList集合特有方法
方法名说明public void addFirst(E,e)在该列表开头插入指定的元素public void addLast(E,e)将指定的元索追加到此列表的末尾public E getFirst()返回此列表中的第一个元索public E getLast()返回此列表中的最后一个元素public E removeFirst从此列表中删除并返回第一个元素public E removeLast从此列表中删除并返回最后一个元素
package ceshi;import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args) {//创建集合对象LinkedListString linkedList new LinkedList();linkedList.add(java);linkedList.add(python);linkedList.add(scala);System.out.println(linkedList); //[java, python, scala]//1、public void addFirst(E,e) 在该列表开头插入指定的元素linkedList.addFirst(1);System.out.println(linkedList); //[1, java, python, scala]//2、public void addLast(E,e) 将指定的元索追加到此列表的末尾linkedList.addLast(5);System.out.println(linkedList); //[1, java, python, scala, 5]//3、public E getFirst() 返回此列表中的第一个元索System.out.println(linkedList.getFirst()); //1//4、public E getLast() 返回此列表中的最后一个元素System.out.println(linkedList.getLast()); //5//5、public E removeFirst 从此列表中删除并返回第一个元素System.out.println(linkedList.removeFirst()); //1System.out.println(linkedList);//[java, python, scala, 5]//6、public E removeLast 从此列表中删除并返回最后一个元素System.out.println(linkedList.removeLast()); //5System.out.println(linkedList); //[java, python, scala]}
}