常用类库Collection
类集是java对数据结构的实现
类集最主要的操作接口:Collection、Map、Iterator
Collection接口
接口定义:
public interface Collection<E> extends Iterabel<E>
开发中不会直接使用Collection接口,而是使用其子接口:List、Set
List接口
public interface List<E> extends Collection<E>
List接口的实现类:ArrayList、Vector、LinkedList
ArrayList:使用的是数组结构,增删慢,查找快
//ArrayList默认长度为0,当开始存数据是默认长度变成10,也可以定义的时候给任意参数
//ArrayList<Integer> data= new ArrayList<>();
//<>中必须传入包装类,不能传int
ArrayList<Integer> data= new ArrayList<>(100);
//add()向集合中插入一个元素
data.add(10);
//打印data中下标为0的元素
System.out.println(data.get(0));
ArrayList<Integer> data1= new ArrayList<>();
data1.add(0);
//addAll(int index, Collection<? extends E> c)从指定位置开始,将指定集合中的所有元素插入此列表
//将原来data下标0元素10换成1,原元素10变成下标1
data.addAll(0,data1);
System.out.println(data.get(0));
System.out.println(data.get(1));
Vector
LinkedList:使用的是双向链表结构,增删快,查找慢
常用add() remove() get()
public class Demo_linkedlist {
public static void main(String[] args) {
//LinkedList 类似栈操作,先进后出
LinkedList<Integer> data = new LinkedList<>();
//addFirst(), 在此列表的开头插入指定的元素
data.addFirst(100);
data.addFirst(200);
//getFirst() 返回此列表中的第一个元素
System.out.println(data.getFirst());
}
}
//压栈
data.push(100);
data.push(200);
//出栈
Integer i = data.pop();
System.out.println(i);
结果同上:200
Iterator
public class Demo2 {
public static void main(String[] args) {
//Iterator 可以迭代所有Collection的集合(List和Set)
//ListIterator 只能迭代List集合
ArrayList<Integer> data = new ArrayList<>();
data.add(1);
data.add(2);
data.add(3);
data.add(4);
data.add(5);
//调用Collection的方法iterator,返回此集合中元素的迭代器。
Iterator<Integer> iterator = data.iterator();
//hasNext() 如果迭代具有更多元素,则返回 true 。
while(iterator.hasNext()){
//next(),返回迭代中的下一个元素。
int i = iterator.next();
System.out.println(i);
}
}
}
public class Demo2 {
public static void main(String[] args) {
//Iterator 可以迭代所有Collection的集合(List和Set)
//ListIterator 只能迭代List集合
ArrayList<Integer> data = new ArrayList<>();
data.add(1);
data.add(2);
data.add(3);
data.add(4);
data.add(5);
//调用Collection的方法iterator,返回此集合中元素的迭代器。
Iterator<Integer> iterator = data.iterator();
//hasNext() 如果迭代具有更多元素,则返回 true 。
iterator.next();
//必须指向下一位置才能删除,初始没有指向任何数据
//remove(),从底层集合中移除此迭代器返回的最后一个元素
iterator.remove();
System.out.println(data.size());
}
}
public class Demo2 {
public static void main(String[] args) {
ArrayList<Integer> data = new ArrayList<>();
data.add(1);
data.add(2);
data.add(3);
data.add(4);
data.add(5);
ListIterator<Integer> iterator = data.listIterator();
//add(),该元素紧接在next()返回的元素之前插入,并且在previous()返回的元素之后插入
//新元素在隐式游标之前插入:对next的后续调用不受影响,随后对previous调用将返回新元素。
iterator.add(100);
//指向1
iterator.next();
//指向2
iterator.next();
//set(),用指定的元素替换 next()或 previous()返回的最后一个元素
//此示例为200替换原data下标为1的2
iterator.set(200);
System.out.println(data.size());
//返回列表中的上一个元素,游标往上移一次
//此时游标返回到集合最初,由于上面新插入一个元素,要移三次
iterator.previous();
iterator.previous();
iterator.previous();
while(iterator.hasNext()){
int i = iterator.next();
System.out.println(i);
}
}
}
增强for(foreach):用于迭代数组 或 集合
格式:
for(数据类型 变量名:集合或数组名){}
public class Demo_forEach {
public static void main(String[] args) {
//遍历数组
int[] arr = {1,2,3,4,5};
for (int i:arr) {
System.out.println(i);
}
//遍历集合
ArrayList<Integer> data = new ArrayList<Integer>();
data.add(1);
data.add(2);
for (int a:data) {
System.out.println(a);
}
}
}