Java入门(三十一)
List集合子类的特点
- List 常用集合子类:ArrayList,LinkedList
- ArrayList底层实现是数组,数组的特点是查询快,增删慢
- LinkedList是双链表实现了List和Deque接口,LinkedList底层数据结构是链表,链表是查询慢,增删快
- 练习:分别使用ArrayList和LinkedList完成存储字符串并遍历,和LIst一样有迭代器、普通for和增强for三种遍历方式。
import java.util.ArrayList;
public class ListDemo {
public static void main(String[] args) {
//创建集合对象
ArrayList<String> array = new ArrayList<String>();
array.add("hello");
array.add("world");
array.add("java");
//遍历
for(String s : array){
System.out.println(s);
}
}
}
LinkedList<String> linkedList = new LinkedList<String>();
linkedList.add("hello");
linkedList.add("world");
linkedList.add("java");
for(String s : linkedList){
System.out.println(s);
}
案例:ArrayList集合存储学生对象用三种方式遍历
- 需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
- 思路:
- 定义学生类
- 创建ArrayList集合对象
- 创建学生对象
- 把学生添加到集合
- 遍历集合:①迭代器:集合特有的遍历方式②普通for:带有索引的遍历方式③增强for:最方便的遍历方式
public class Student {
private String name;
private int age;
public Student(){};
public Student(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(){
this.age = age;
}
}
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
//创建ArrayList集合对象
ArrayList<Student> array = new ArrayList<Student>();
//创建学生对象
Student s1 = new Student("林青霞",30);
Student s2 = new Student("张曼玉",30);
Student s3 = new Student("王祖贤",30);
//把学生添加到集合
array.add(s1);
array.add(s2);
array.add(s3);
}
}
//迭代器
Iterator<Student> it = array.iterator();
while(it.hasNext()){
Student s = it.next();
System.out.println(s.getName()+","+s.getAge());
}
for(int i = 0 ; i < array.size() ; i++){
Student s = array.get(i);
System.out.println(s.getName()+","+s.getAge());
}
for (Student s : array){
System.out.println(s.getName()+","+s.getAge());
}
LinkedList集合特有功能
方法名 | 说明 |
---|
public void addFirst(E e) | 在该列表开头插入指定的元素 |
public void addLast(E e) | 将指定的元素追加到此列表的末尾 |
public E getFirst() | 返回此列表中的第一个元素 |
public E getLast() | 返回此列表中的最后一个元素 |
public E removeFirst() | 从此列表中删除并返回第一个元素 |
public E remove Last() | 从此列表中删除并返回最后一个元素 |
- LinkedList底层结构是链表,所以他提供了一些针对于头结点,尾节点进行操作的方法。
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
//创建集合对象
LinkedList<String> linkedList = new LinkedList<String>();
linkedList.add("hello");
linkedList.add("world");
linkedList.add("java");
System.out.println(linkedList);
}
}
linkedList.addFirst("javaee");
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7affe29737ee41b7e8035c5ae8b40ecf.png)
linkedList.addLast("javase");
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/cd48b84efd0bcd5c106d6b2fc101cfd2.png)
System.out.println(linkedList.getFirst());
System.out.println(linkedList.getLast());
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ca02c8fd20797cddd532e3d05ecb074e.png)
System.out.println(linkedList.removeFirst()); //返回被移除的第一个元素
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3a872212ca2e4adf990112b8626fc606.png)
System.out.println(linkedList.removeLast());
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6b36e7f5b02714a772738be55d964baf.png)