【从零开始学Java笔记】ArrayList类、Collection类和List类
大家可以关注作者的账号,关注从零开始学Java笔记文集。也可以根据目录前往作者的博客园博客进行学习。本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法。欢迎大家一起学习和讨论。
【从零开始学Java笔记】目录
集合的体系结构
由于不同的数据结构(数据的组织,存储方式),所以Java为我们提供了不同的集合,但是不同的集合他们的功能都是相似,不断怕向上提取,将共性抽取出来,这就是集合体系结构形成的原因
体系结构:
怎么学习?最顶层开始学习,因为最项层包含了所有的共性
怎么使用?使用最底层,因为最底层就是具体的实现
Collection -> List -> ArrayList
Collection类
Collection类的常用功能
- boolean add(E e)
void clear()
boolean contains(Object o)
boolean isEmpty()
boolean remove(Object o)
int size()
Object[] toArray()
import java.util.ArrayList;
import java.util.Collection;
public class CollectionDemo {
public static void main(String[] args) {
//创建集合对象
//Collection c = new Collection();//Collection是接口,不能实例化
Collection c = new ArrayList();//多态,父类引用指向子类对象
//boolean add(E e)
System.out.println(c.add("hello"));//永远可以添加成功,因为ArrayList他允许重复
System.out.println(c.add("world"));
//void clear():清空集合
//c.clear();
//boolean contains(Object o) :判断集合中是否包含指定元素
//System.out.println(c.contains("java"));
//boolean isEmpty() :是否为空
//System.out.println(c.isEmpty());
//boolean remove(Object o) :删除元素
//System.out.println(c.remove("java"));
//int size() :返回集合中的元素个数
//System.out.println(c.size());
//Object[] toArray() :将集合转换成一个Object类型的数组
Object[] objs = c.toArray();
for (int i = 0; i < objs.length; i++) {
System.out.println(objs[i]);
}
System.out.println(c);
}
}
集合的遍历方式
1.toArray(),可以把集合转换成数组,然后遍历数组即可
2.iterator(),可以返回一个迭代器对象,我们可以通过迭代器对象来迭代集合
3.foreach方法
4.不能用for循环,因为Collection类没有索引,但是Colletion的子类可以,因为他们有索引
Iterator:可以用于遍历集合
-
E next() :返回下一个元素
注意:Exception in thread "main" java.util.NoSuchElementException使用next方法获取下一个元素,如果没有元素可以获取,则出现NoSuchElementException
-
boolean hasNext() :判断是否有元素可以获取
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class InterationDemo {
public static void main(String[] args) {
// method();
// method1();
}
private static void method1() {
//创建集合对象
Collection c = new ArrayList();
//添加元素
c.add("hello");
c.add("world");
c.add("java");
//获取迭代器对象
Iterator it = c.iterator();
//Object next() :返回下一个元素
//boolean hasNext() :判断是否有元素可以获取
while(it.hasNext()) {
System.out.println(it.next());
}
}
private static void method() {
//创建集合对象
Collection c = new ArrayList();
//添加元素
c.add("hello");
c.add("world");
c.add("java");
//获取数组
Object[] objs = c.toArray();
//遍历数组
for (int i = 0; i < objs.length; i++) {
System.out.println(objs[i]);
}
}
}
List类
List的特点
- 有序的(存储和读取的顺序是一致的)
有整数索引
允许重复的
List的特有功能(增删改查)
- void add(int index, E element)
E get(int index)
E remove(int index)
E set(int index, E element)
import java.util.ArrayList;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
//创建的列表对象
List list = new ArrayList();
//void add(int index, E element) : 在指定索引位置添加指定元素
list.add(0, "hello");
list.add(0, "world");
list.add(1, "java");
//E get(int index) :根据索引返回元素
//遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("-----------------");
//E remove(int index) : 删除指定元素并返回
System.out.println(list.remove(2));
System.out.println("-----------------");
//E set(int index, E element) : 将指定索引位置的元素替换为指定元素,并将原先的元素返回
System.out.println(list.set(0, "android"));
System.out.println(list);
}
}
输出结果
world
java
hello
-----------------
hello
-----------------
world
[android, java]
List的子类
List的常用子类:
ArrayList:底层是数组结构,查询快,增删慢
L inkedList:底层结构是链表,查询慢,增删快
如何选择使用不同的集合?
如果查询多,增删少,则使用ArrayList
如果查询少,增删多,则使用LinkedList
LinkedList的特有功能
- void addFirst(E e)
void addLast(E e)
E getFirst()
E getLast()
E removeFirst()
E removeLast()
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.add("hello");
list.add("world");
System.out.println(list);
System.out.println("-----------------");
// void addFirst(E e) :将元素添加到索引为0的位置
// void addLast(E e) :将元素添加到索引为size()-1的位置
list.addFirst("java");
list.addLast("android");
System.out.println(list);
System.out.println("-----------------");
// E getFirst() :获取索引为0的元素
// E getLast() :获取索引为size()-1的元素
System.out.println(list.getFirst());
System.out.println(list.getLast());
System.out.println("-----------------");
// E removeFirst() :删除索引为0的元素并返回
// E removeLast() :删除索引为size()-1的元素并返回
System.out.println(list.removeFirst());
System.out.println(list.removeLast());
System.out.println(list);
System.out.println("-----------------");
}
}
输出结果
[hello, world]
-----------------
[java, hello, world, android]
-----------------
java
android
-----------------
java
android
[hello, world]
-----------------
ArrayList类
集合类的特点:长度可变
ArrayList
构造方法
ArrayList<String> array = new ArrayL ist<String>();
成员方法
添加元素
public boolean add(E e) :添加元素
public void add(int index,E element) :在指定的索引处添加一个元素
获取元素
public E get(int index) :返回指定索引处的元素
集合长度
public int size( ):返回集合中的元素的个数
删除元素
public boolean remove(0bject o) :册余指定的元素,返回删除是否成功
public E remove(int index) :删除指定索引处的元素,返回被删除的元素
修改元素
public E set(int index,E element ) :修改指定索引处的元素,返回被修改的元素
这里简单举个例子,就是老生常谈的学生管理系统。但是由于篇幅较长,就不在这里写了,具体请在相应章节博客寻找。