List接口
List接口的概述(Collection接口的子类之一)
List接口的特点:
1.有序的集合,即存储和取出得顺序一致
2.该集合是带索引的,所以List集合中提供的是一些与索引相关的特有方法
3.与set集合不同,可以存储重复的元素
List接口的特有的带索引的方法:
1.public void add(int index,E element);
功能描述:将指定的元素存储到指定的地方
eg:
List<String> list =new ArrayList();
list.add("a");
list.add("a");
list.add("a");
list.add("a");
list.add("a");
for (String s : list) {
System.out.print(s);
}
list.add(3,"itheima");
System.out.println(list);
2.public E get(int index);
功能描述:返回集合中指定位置的元素
eg:
String s = list.get(3);
System.out.println(s);
3.public E remove(int index);
功能描述:删除指定下标的元素,注意的是这里返回的并不是一个布尔值,而是被删除的元素值。
eg:
String removee = list.remove(3);
System.out.println(removee);
4.public E set(int index,E element);
功能描述:用指定元素替换指定位置的元素
eg:
list.set(4,"zhagnasn");
String s = list.get(3);
5.用size方法和get方法遍历集合
说明:一般而言,我们遍历集合直接使用增强for或者迭代器遍历即可,但有的人喜欢用索引的方式遍历,这里介绍一下。
List<String> list =new ArrayList();
list.add("a");
list.add("a");
list.add("a");
list.add("a");
list.add("a");
for (int i = 0; i < list.size(); i++) {
String s1 = list.get(i);
System.out.print(s1);
}
List接口的实现类:
List集合下有两大主要实现类,我们在开发中随意使用这两个子类其实是有所欠缺的,我们应该充分分析自己的需求,选择合适的实现类
1.ArrayList
底层是一个数组,查询快,增删慢
2.LinkedList
底层是一个链表,增删快,查询慢,既然是链表,那他其中自然包含了许多首尾元素操作的方法。
LinkedList中的方法(主要是首尾操作的一些方法)
注意:使用LinkedList的时候无法使用多态,如下图:
1.addFirst
功能说明:在集合的第一个元素之前插入一个元素
代码:
private static void addFirstTest() {
LinkedList<String> str = new LinkedList<>();
str.add("z");
str.add("h");
str.add("a");
str.add("o");
str.add("w");
str.add("e");
str.add("i");
str.addFirst("mcc");
System.out.println(str);
}
测试
2.addLast
功能说明:在集合的最后一个元素之后插入一个元素
代码:
private static void addLastTest() {
LinkedList<String> str = new LinkedList<>();
str.add("z");
str.add("h");
str.add("a");
str.add("o");
str.add("w");
str.add("e");
str.add("i");
str.addLast("mcc");
System.out.println(str);
}
测试
3.push
功能说明:相当于栈中的压栈,即等同于addFirst
代码:
private static void pushTest() {
LinkedList<String> str = new LinkedList<>();
str.add("z");
str.add("h");
str.add("a");
str.add("o");
str.add("w");
str.add("e");
str.add("i");
str.push("mcc");
System.out.println(str);
}
测试
4.removeFirst
功能说明:移除集合的第一个元素
代码:
private static void removeFirstTest() {
LinkedList<String> str = new LinkedList<>();
str.add("z");
str.add("h");
str.add("a");
str.add("o");
str.add("w");
str.add("e");
str.add("i");
String s = str.removeFirst();
System.out.println(s);//返回删除的字符串
System.out.println(str);
}
测试
5.removeLast
功能说明:移除集合的最后一个元素
代码:
private static void removeLastTest() {
LinkedList<String> str = new LinkedList<>();
str.add("z");
str.add("h");
str.add("a");
str.add("o");
str.add("w");
str.add("e");
str.add("i");
String s = str.removeLast();
System.out.println(s);
System.out.println(str);
}
测试
6.pop
功能说明:弹出集合中的第一个元素
代码:
private static void popTest() {
LinkedList<String> str = new LinkedList<>();
str.add("z");
str.add("h");
str.add("a");
str.add("o");
str.add("w");
str.add("e");
str.add("i");
String pop = str.pop();
System.out.println(pop);
System.out.println(str);
}
测试
7.getFirst
功能说明:获取集合中的第一个元素
代码:
private static void getFirstTest() {
LinkedList<String> str = new LinkedList<>();
str.add("z");
str.add("h");
str.add("a");
str.add("o");
str.add("w");
str.add("e");
str.add("i");
String first = str.getFirst();
System.out.println(first);
System.out.println(str);
}
测试
8.getLast
功能说明:获取集合的最后一个元素
代码:
private static void getLastTest() {
LinkedList<String> str = new LinkedList<>();
str.add("z");
str.add("h");
str.add("a");
str.add("o");
str.add("w");
str.add("e");
str.add("i");
String last = str.getLast();
System.out.println(last);
System.out.println(str);
}
测试
9.peek
功能说明:弹出集合中的第一个元素等价于getFirst
代码:
private static void peekTest() {
LinkedList<String> str = new LinkedList<>();
str.add("z");
str.add("h");
str.add("a");
str.add("o");
str.add("w");
str.add("e");
str.add("i");
String peek = str.peek();
System.out.println(peek);
System.out.println(str);
}
测试
10.isEmpty
判断集合是否为空,是空返回真,否则返回假
代码:
private static void isEmptyTest() {
LinkedList<String> str = new LinkedList<>();
str.add("z");
str.add("h");
str.add("a");
str.add("o");
str.add("w");
str.add("e");
str.add("i");
boolean empty = str.isEmpty();
System.out.println(empty);
}
测试