1 List 集合概述和特点
Module:jva.base
软件包:java.util
(1)有序集合
(序列):用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素。
(2)与Set集合不同,列表通常允许重复
的元素
List 集合特点
(1)有序:存储和取出的元素顺序一致
(2)可重复:存储的元素可以重复
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("java");
list.add("world");
System.out.println(list);
Iterator<String> it = list.iterator();
while (it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
}
输出
[hello, world, java, world]
hello
world
java
world
2 List集合方法
void add(int index, E element)
:在此集合中的指定位置插入指定的元素
E remove(int index)
:删除指定索引处的元素,返回被删除的元素
E set(int index, E element)
:修改指定索引处的元素,返回修改的元素
E get(int index)
:返回指定索引处的元素
注:
索引越界后,会抛出索引异常java.lang.IndexOutOfBoundsException
package List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("java");
list.add("world");
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
System.out.println(s);
}
}
}
3 List 集合存储学生对象并遍历
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
思路
(1)定义学生类
(2)创建List集合对象
(3)创建学生对象
(4)把学生添加到集合
(5)遍历集合(迭代器方式,for循环方式)
package ListDemo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
Student s1 = new Student("灰太狼", 20);
Student s2 = new Student("懒洋洋", 21);
Student s3 = new Student("导演", 22);
list.add(s1);
list.add(s2);
list.add(s3);
Iterator<Student> it = list.iterator();
while (it.hasNext()) {
Student s = it.next();
System.out.println(s.getName() + "," + s.getAge());
}
System.out.println("--------");
for(int i=0;i<list.size();i++){
Student s = list.get(i);
System.out.println(s.getName() + "," + s.getAge());
}
}
}
输出:
灰太狼,20
懒洋洋,21
导演,22
--------
灰太狼,20
懒洋洋,21
导演,22
4 List 并发修改异常
package List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("java");
Iterator<String> it = list.iterator();
while (it.hasNext()){
String s = it.next();
if(s.equals("world")){
list.add("javaee");
}
}
System.out.println(list);
}
}
抛出运行时异常(继承)java.util.ConcurrentModificationException
当不允许这样的修改时,可以通过检测到对象的并发修改的方法来抛出此异常
优化:
package List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("java");
for(int i=0;i<list.size();i++){
String s = list.get(i);
if(s.equals("world")){
list.add("javaee");
}
}
System.out.println(list);
}
}
输出:
[hello, world, java, javaee]
5 ListIterator 列表迭代器
(1)通过List集合的listIterator()方法得到,所以说踏实List集合特有的迭代器
(2)用于允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置
常用方法
E next()
:返回迭代中的下一个元素
boolean hasNext
:如果迭代具有更多元素,则返回true
E previout
:返回列表中的上一个元素
boolean hasPrevious
:如果此列表迭代器在相反的方向遍历列表是具有更多元素,则返回true
void add(E e)
:将指定元素插入列表
package List;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("java");
ListIterator<String> lit = list.listIterator();
while (lit.hasNext()){
String s = lit.next();
if(s.equals("world")){
lit.add("javaee");
}
}
System.out.println(list);
}
}
6 List 增强for循环
增强for:简化数组和Collection集合的遍历
(1)实现Iterable接口的类允许其成为增强型for语句的目标
(2)它是JDK5之后出现的,其内部原理是一个Itera迭代器
增强for的格式
for (元素数据类型 变量名:数组或者Collection集合){
}
案例:
int[] arr = {1, 2, 3, 4, 5, 6};
for (int i : arr) {
System.out.println(i);
}
System.out.println("------");
String[] strArray = {"A", "B", "C"};
for (String s : strArray) {
System.out.println(s);
}
System.out.println("------");
ArrayList<String> list = new ArrayList<>();
list.add("hello");
list.add("world");
list.add("java");
for(String s: list){
System.out.println(s);
}
输出:
1
2
3
4
5
6
------
A
B
C
------
hello
world
java
7 List集合存储学生对象用三种方式遍历
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序在控制台遍历该集合
思路
1、定义学生类
2、创建List集合对象
3、创建学生对象
4、把学生添加到集合
5、遍历集合
(1)迭代器:集合特有的遍历方式
(2)普通for:带有索引的遍历方式
(3)最方便的遍历方式
package ListDemo1;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
Student s1 = new Student("灰太狼", 20);
Student s2 = new Student("懒洋洋", 21);
Student s3 = new Student("导演", 22);
list.add(s1);
list.add(s2);
list.add(s3);
Iterator<Student> it = list.iterator();
while (it.hasNext()) {
Student s = it.next();
System.out.println(s.getName() + "," + s.getAge());
}
System.out.println("--------");
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.getName() + "," + s.getAge());
}
System.out.println("------");
for (Student s : list) {
System.out.println(s.getName() + "," + s.getAge());
}
}
}
输出:
灰太狼,20
懒洋洋,21
导演,22
--------
灰太狼,20
懒洋洋,21
导演,22
------
灰太狼,20
懒洋洋,21
导演,22
参考地址:
https://www.bilibili.com/video/BV18J411W7cE?p=231
<h2><a id="1_List__0"></a>1 List 集合概述和特点</h2>
<p>Module:jva.base</p>
<p>软件包:java.util</p>
<p>(1)<code>有序集合</code>(序列):用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素。</p>
<p>(2)与Set集合不同,列表通常<code>允许重复</code>的元素</p>
<p><strong>List 集合特点</strong></p>
<p>(1)有序:存储和取出的元素顺序一致</p>
<p>(2)可重复:存储的元素可以重复</p>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">import</span> java.util.ArrayList;
<span class="hljs-keyword">import</span> java.util.Iterator;
<span class="hljs-keyword">import</span> java.util.List;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">ListDemo</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> {
<span class="hljs-comment">// 创建集合对象</span>
List<String> list = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><String>();
<span class="hljs-comment">// 添加元素</span>
list.add(<span class="hljs-string">"hello"</span>);
list.add(<span class="hljs-string">"world"</span>);
list.add(<span class="hljs-string">"java"</span>);
list.add(<span class="hljs-string">"world"</span>);
<span class="hljs-comment">// 输出集合对象</span>
System.out.println(list);
<span class="hljs-comment">// 迭代器方式遍历</span>
Iterator<String> it = list.iterator();
<span class="hljs-keyword">while</span> (it.hasNext()){
<span class="hljs-type">String</span> <span class="hljs-variable">s</span> <span class="hljs-operator">=</span> it.next();
System.out.println(s);
}
}
}
</code></div></pre>
<p>输出</p>
<pre><div class="hljs"><code class="lang-java">[hello, world, java, world]
hello
world
java
world
</code></div></pre>
<h2><a id="2_List_54"></a>2 List集合方法</h2>
<p><code>void add(int index, E element)</code>:在此集合中的指定位置插入指定的元素</p>
<p><code>E remove(int index)</code>:删除指定索引处的元素,返回被删除的元素</p>
<p><code>E set(int index, E element)</code>:修改指定索引处的元素,返回修改的元素</p>
<p><code>E get(int index)</code>:返回指定索引处的元素</p>
<p>注:</p>
<p>索引越界后,会抛出索引异常<code>java.lang.IndexOutOfBoundsException</code></p>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> List;
<span class="hljs-keyword">import</span> java.util.ArrayList;
<span class="hljs-keyword">import</span> java.util.Iterator;
<span class="hljs-keyword">import</span> java.util.List;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">ListDemo</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> {
<span class="hljs-comment">// 创建集合对象</span>
List<String> list = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><String>();
<span class="hljs-comment">// 添加元素</span>
list.add(<span class="hljs-string">"hello"</span>);
list.add(<span class="hljs-string">"world"</span>);
list.add(<span class="hljs-string">"java"</span>);
list.add(<span class="hljs-string">"world"</span>);
<span class="hljs-comment">// void add(int index, E element):在此集合中的指定位置插入指定的元素</span>
<span class="hljs-comment">// list.add(1,"javaee");</span>
<span class="hljs-comment">// list.add(11,"javaee"); // 索引越界异常</span>
<span class="hljs-comment">// E remove(int index):删除指定索引处的元素,返回被删除的元素</span>
<span class="hljs-comment">// System.out.println(list.remove(1));</span>
<span class="hljs-comment">// E set(int index, E element):修改指定索引处的元素,返回修改的元素</span>
<span class="hljs-comment">// System.out.println(list.set(1,"666"));</span>
<span class="hljs-comment">// E get(int index):返回指定索引处的元素</span>
<span class="hljs-comment">// System.out.println(list.get(11));</span>
<span class="hljs-comment">// 输出集合对象</span>
<span class="hljs-comment">// System.out.println(list);</span>
<span class="hljs-comment">// 用for循环遍历集合</span>
<span class="hljs-keyword">for</span> (<span class="hljs-type">int</span> <span class="hljs-variable">i</span> <span class="hljs-operator">=</span> <span class="hljs-number">0</span>; i < list.size(); i++) {
<span class="hljs-type">String</span> <span class="hljs-variable">s</span> <span class="hljs-operator">=</span> list.get(i);
System.out.println(s);
}
}
}
</code></div></pre>
<h2><a id="3_List__112"></a>3 List 集合存储学生对象并遍历</h2>
<p>需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合</p>
<p><strong>思路</strong></p>
<p>(1)定义学生类<br />
(2)创建List集合对象<br />
(3)创建学生对象<br />
(4)把学生添加到集合<br />
(5)遍历集合(迭代器方式,for循环方式)</p>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> ListDemo;
<span class="hljs-keyword">import</span> java.util.ArrayList;
<span class="hljs-keyword">import</span> java.util.Iterator;
<span class="hljs-keyword">import</span> java.util.List;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">ListDemo</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> {
<span class="hljs-comment">// 创建List集合对象</span>
List<Student> list = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><Student>();
<span class="hljs-comment">// 创建学生对象</span>
<span class="hljs-type">Student</span> <span class="hljs-variable">s1</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Student</span>(<span class="hljs-string">"灰太狼"</span>, <span class="hljs-number">20</span>);
<span class="hljs-type">Student</span> <span class="hljs-variable">s2</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Student</span>(<span class="hljs-string">"懒洋洋"</span>, <span class="hljs-number">21</span>);
<span class="hljs-type">Student</span> <span class="hljs-variable">s3</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Student</span>(<span class="hljs-string">"导演"</span>, <span class="hljs-number">22</span>);
<span class="hljs-comment">// 把学生添加到集合</span>
list.add(s1);
list.add(s2);
list.add(s3);
<span class="hljs-comment">// 迭代器方式遍历</span>
Iterator<Student> it = list.iterator();
<span class="hljs-keyword">while</span> (it.hasNext()) {
<span class="hljs-type">Student</span> <span class="hljs-variable">s</span> <span class="hljs-operator">=</span> it.next();
System.out.println(s.getName() + <span class="hljs-string">","</span> + s.getAge());
}
System.out.println(<span class="hljs-string">"--------"</span>);
<span class="hljs-comment">// fot 循环方式遍历</span>
<span class="hljs-keyword">for</span>(<span class="hljs-type">int</span> i=<span class="hljs-number">0</span>;i<list.size();i++){
<span class="hljs-type">Student</span> <span class="hljs-variable">s</span> <span class="hljs-operator">=</span> list.get(i);
System.out.println(s.getName() + <span class="hljs-string">","</span> + s.getAge());
}
}
}
</code></div></pre>
<p>输出:</p>
<pre><div class="hljs"><code class="lang-java">灰太狼,<span class="hljs-number">20</span>
懒洋洋,<span class="hljs-number">21</span>
导演,<span class="hljs-number">22</span>
--------
灰太狼,<span class="hljs-number">20</span>
懒洋洋,<span class="hljs-number">21</span>
导演,<span class="hljs-number">22</span>
</code></div></pre>
<h2><a id="4_List__178"></a>4 List 并发修改异常</h2>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> List;
<span class="hljs-keyword">import</span> java.util.ArrayList;
<span class="hljs-keyword">import</span> java.util.Iterator;
<span class="hljs-keyword">import</span> java.util.List;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">ListDemo</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> {
<span class="hljs-comment">// 创建集合对象</span>
List<String> list = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><String>();
<span class="hljs-comment">// 添加元素</span>
list.add(<span class="hljs-string">"hello"</span>);
list.add(<span class="hljs-string">"world"</span>);
list.add(<span class="hljs-string">"java"</span>);
<span class="hljs-comment">// 遍历集合,得到每一个元素,看有没有world这个元素,如果有,就添加一个"javaee"元素</span>
Iterator<String> it = list.iterator();
<span class="hljs-keyword">while</span> (it.hasNext()){
<span class="hljs-type">String</span> <span class="hljs-variable">s</span> <span class="hljs-operator">=</span> it.next();
<span class="hljs-keyword">if</span>(s.equals(<span class="hljs-string">"world"</span>)){
list.add(<span class="hljs-string">"javaee"</span>);
}
}
<span class="hljs-comment">// 输出集合对象</span>
System.out.println(list);
}
}
</code></div></pre>
<p>抛出运行时异常(继承)<code>java.util.ConcurrentModificationException</code>当不允许这样的修改时,可以通过检测到对象的并发修改的方法来抛出此异常</p>
<p>优化:</p>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> List;
<span class="hljs-keyword">import</span> java.util.ArrayList;
<span class="hljs-keyword">import</span> java.util.Iterator;
<span class="hljs-keyword">import</span> java.util.List;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">ListDemo</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> {
<span class="hljs-comment">// 创建集合对象</span>
List<String> list = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><String>();
<span class="hljs-comment">// 添加元素</span>
list.add(<span class="hljs-string">"hello"</span>);
list.add(<span class="hljs-string">"world"</span>);
list.add(<span class="hljs-string">"java"</span>);
<span class="hljs-comment">// 遍历集合,得到每一个元素,看有没有world这个元素,如果有,就添加一个"javaee"元素</span>
<span class="hljs-comment">// Iterator<String> it = list.iterator();</span>
<span class="hljs-comment">// while (it.hasNext()){</span>
<span class="hljs-comment">// String s = it.next();</span>
<span class="hljs-comment">// if(s.equals("world")){</span>
<span class="hljs-comment">// list.add("javaee");</span>
<span class="hljs-comment">// }</span>
<span class="hljs-comment">// }</span>
<span class="hljs-comment">// 优化</span>
<span class="hljs-keyword">for</span>(<span class="hljs-type">int</span> i=<span class="hljs-number">0</span>;i<list.size();i++){
<span class="hljs-type">String</span> <span class="hljs-variable">s</span> <span class="hljs-operator">=</span> list.get(i);
<span class="hljs-keyword">if</span>(s.equals(<span class="hljs-string">"world"</span>)){
list.add(<span class="hljs-string">"javaee"</span>);
}
}
<span class="hljs-comment">// 输出集合对象</span>
System.out.println(list);
}
}
</code></div></pre>
<p>输出:</p>
<pre><div class="hljs"><code class="lang-java">[hello, world, java, javaee]
</code></div></pre>
<h2><a id="5_ListIterator__265"></a>5 ListIterator 列表迭代器</h2>
<p>(1)通过List集合的listIterator()方法得到,所以说踏实List集合特有的迭代器<br />
(2)用于允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置</p>
<p><strong>常用方法</strong></p>
<p><code>E next()</code>:返回迭代中的下一个元素<br />
<code>boolean hasNext</code>:如果迭代具有更多元素,则返回true</p>
<p><code>E previout</code>:返回列表中的上一个元素</p>
<p><code>boolean hasPrevious</code>:如果此列表迭代器在相反的方向遍历列表是具有更多元素,则返回true</p>
<p><code>void add(E e)</code>:将指定元素插入列表</p>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> List;
<span class="hljs-keyword">import</span> java.util.ArrayList;
<span class="hljs-keyword">import</span> java.util.List;
<span class="hljs-keyword">import</span> java.util.ListIterator;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">ListDemo</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> {
<span class="hljs-comment">// 创建集合对象</span>
List<String> list = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><String>();
<span class="hljs-comment">// 添加元素</span>
list.add(<span class="hljs-string">"hello"</span>);
list.add(<span class="hljs-string">"world"</span>);
list.add(<span class="hljs-string">"java"</span>);
<span class="hljs-comment">// 了解内容 不怎么用</span>
<span class="hljs-comment">// 通过List集合的ListIterator() 方法得到</span>
<span class="hljs-comment">// ListIterator<String> lit = list.listIterator();</span>
<span class="hljs-comment">// while (lit.hasNext()){</span>
<span class="hljs-comment">// String s = lit.next();</span>
<span class="hljs-comment">// System.out.println(s);</span>
<span class="hljs-comment">// }</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">// System.out.println("--------");</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">// // 逆向遍历</span>
<span class="hljs-comment">// while (lit.hasPrevious()){</span>
<span class="hljs-comment">// String s = lit.previous();</span>
<span class="hljs-comment">// System.out.println(s);</span>
<span class="hljs-comment">// }</span>
<span class="hljs-comment">// 获取列表迭代器</span>
ListIterator<String> lit = list.listIterator();
<span class="hljs-keyword">while</span> (lit.hasNext()){
<span class="hljs-type">String</span> <span class="hljs-variable">s</span> <span class="hljs-operator">=</span> lit.next();
<span class="hljs-keyword">if</span>(s.equals(<span class="hljs-string">"world"</span>)){
lit.add(<span class="hljs-string">"javaee"</span>);
}
}
<span class="hljs-comment">// 输出集合对象</span>
System.out.println(list);
}
}
</code></div></pre>
<h2><a id="6_List_for_331"></a>6 List 增强for循环</h2>
<p>增强for:简化数组和Collection集合的遍历</p>
<p>(1)实现Iterable接口的类允许其成为增强型for语句的目标</p>
<p>(2)它是JDK5之后出现的,其内部原理是一个Itera迭代器</p>
<p><strong>增强for的格式</strong></p>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">for</span> (元素数据类型 变量名:数组或者Collection集合){
<span class="hljs-comment">// 在此处使用变量即可,该变量就是元素</span>
}
</code></div></pre>
<p>案例:</p>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-comment">// 整形</span>
<span class="hljs-type">int</span>[] arr = {<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>};
<span class="hljs-keyword">for</span> (<span class="hljs-type">int</span> i : arr) {
System.out.println(i);
}
System.out.println(<span class="hljs-string">"------"</span>);
<span class="hljs-comment">// 字符串型</span>
String[] strArray = {<span class="hljs-string">"A"</span>, <span class="hljs-string">"B"</span>, <span class="hljs-string">"C"</span>};
<span class="hljs-keyword">for</span> (String s : strArray) {
System.out.println(s);
}
System.out.println(<span class="hljs-string">"------"</span>);
<span class="hljs-comment">// 集合</span>
ArrayList<String> list = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><>();
list.add(<span class="hljs-string">"hello"</span>);
list.add(<span class="hljs-string">"world"</span>);
list.add(<span class="hljs-string">"java"</span>);
<span class="hljs-keyword">for</span>(String s: list){
System.out.println(s);
}
</code></div></pre>
<p>输出:</p>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-number">1</span>
<span class="hljs-number">2</span>
<span class="hljs-number">3</span>
<span class="hljs-number">4</span>
<span class="hljs-number">5</span>
<span class="hljs-number">6</span>
------
A
B
C
------
hello
world
java
</code></div></pre>
<h2><a id="7_List_394"></a>7 List集合存储学生对象用三种方式遍历</h2>
<p>需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序在控制台遍历该集合</p>
<p><strong>思路</strong></p>
<p>1、定义学生类</p>
<p>2、创建List集合对象</p>
<p>3、创建学生对象</p>
<p>4、把学生添加到集合</p>
<p>5、遍历集合</p>
<p>(1)迭代器:集合特有的遍历方式</p>
<p>(2)普通for:带有索引的遍历方式</p>
<p>(3)最方便的遍历方式</p>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> ListDemo1;
<span class="hljs-keyword">import</span> java.util.ArrayList;
<span class="hljs-keyword">import</span> java.util.Iterator;
<span class="hljs-keyword">import</span> java.util.List;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">ListDemo</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> {
<span class="hljs-comment">// 创建List对象</span>
List<Student> list = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><Student>();
<span class="hljs-comment">// 创建学生对象</span>
<span class="hljs-type">Student</span> <span class="hljs-variable">s1</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Student</span>(<span class="hljs-string">"灰太狼"</span>, <span class="hljs-number">20</span>);
<span class="hljs-type">Student</span> <span class="hljs-variable">s2</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Student</span>(<span class="hljs-string">"懒洋洋"</span>, <span class="hljs-number">21</span>);
<span class="hljs-type">Student</span> <span class="hljs-variable">s3</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Student</span>(<span class="hljs-string">"导演"</span>, <span class="hljs-number">22</span>);
<span class="hljs-comment">// 把学生添加到集合</span>
list.add(s1);
list.add(s2);
list.add(s3);
<span class="hljs-comment">// 迭代器,集合特有的遍历方式</span>
Iterator<Student> it = list.iterator();
<span class="hljs-keyword">while</span> (it.hasNext()) {
<span class="hljs-type">Student</span> <span class="hljs-variable">s</span> <span class="hljs-operator">=</span> it.next();
System.out.println(s.getName() + <span class="hljs-string">","</span> + s.getAge());
}
System.out.println(<span class="hljs-string">"--------"</span>);
<span class="hljs-comment">// 普通for:带有索引的遍历方式</span>
<span class="hljs-keyword">for</span> (<span class="hljs-type">int</span> <span class="hljs-variable">i</span> <span class="hljs-operator">=</span> <span class="hljs-number">0</span>; i < list.size(); i++) {
<span class="hljs-type">Student</span> <span class="hljs-variable">s</span> <span class="hljs-operator">=</span> list.get(i);
System.out.println(s.getName() + <span class="hljs-string">","</span> + s.getAge());
}
System.out.println(<span class="hljs-string">"------"</span>);
<span class="hljs-comment">// 增强for:最方便的遍历方式</span>
<span class="hljs-keyword">for</span> (Student s : list) {
System.out.println(s.getName() + <span class="hljs-string">","</span> + s.getAge());
}
}
}
</code></div></pre>
<p>输出:</p>
<pre><div class="hljs"><code class="lang-java">灰太狼,<span class="hljs-number">20</span>
懒洋洋,<span class="hljs-number">21</span>
导演,<span class="hljs-number">22</span>
--------
灰太狼,<span class="hljs-number">20</span>
懒洋洋,<span class="hljs-number">21</span>
导演,<span class="hljs-number">22</span>
------
灰太狼,<span class="hljs-number">20</span>
懒洋洋,<span class="hljs-number">21</span>
导演,<span class="hljs-number">22</span>
</code></div></pre>
<p>参考地址:<br />
https://www.bilibili.com/video/BV18J411W7cE?p=231</p>
留言