1.常用API
(1)ArrayList
1.在某个索引位置处插入元素
2.根据索引删除元素,返回被删除的元素
3.根据索引获取元素:public E get(int index):返回集合中指定位置的元素
4.修改索引位置处的元素:public E set (int index , E element)
5.清空集合
package List.API;
public class ArrayListDemo {
public static void main(String[] args) {
//1.创建一个ArrayList的集合对象
//List: 有序,可重复,有索引的
java.util.ArrayList<String> list = new java.util.ArrayList<>();
list.add("名");
list.add("之");
list.add("以");
list.add("父");
System.out.println(list);//[名, 之, 以, 父]
//2.在某个索引位置处插入元素
list.add(2,"Java");
System.out.println(list);//[名, 之, Java, 以, 父]
//3.根据索引删除元素,返回被删除的元素值
System.out.println(list.remove(2));//Java
System.out.println(list);//[名, 之, 以, 父]
//4.根据索引获取元素:public E get(int index):返回集合中指定位置的元素
System.out.println(list.get(2));//以
//5.修改索引位置处的元素:public E set (int index , E element)
//返回修改前的数据
System.out.println(list.set(1,"wu"));//之
System.out.println(list);//[名, wu, 以, 父]
//list.clear();
}
}
(2)LinkedList
栈:入栈,出栈
队列:入队,出队
package List.API;
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
//栈
LinkedList<String> stack = new LinkedList<>();
//入栈,压栈
stack.addFirst("第一颗子弹");//addFirst == push 换个包装而已
stack.push("第二颗子弹");
stack.addFirst("第三颗子弹");
stack.addFirst("第四颗子弹");
System.out.println(stack);//[第四颗子弹, 第三颗子弹, 第二颗子弹, 第一颗子弹]
//出栈,弹栈
System.out.println(stack.removeFirst());//第四颗子弹-----removeFirst == pop 换包装
System.out.println(stack.pop());//第三颗子弹
System.out.println(stack.removeFirst());//第二颗子弹
System.out.println(stack);//[第一颗子弹]
System.out.println("---------------------------");
//队列
LinkedList<String> queue = new LinkedList<>();
//入队
queue.addLast("1号");
queue.addLast("2号");
queue.addLast("3号");
queue.addLast("4号");
System.out.println(queue);//[1号, 2号, 3号, 4号]
//出队
System.out.println(queue.removeFirst());//1号
System.out.println(queue.removeFirst());//2号
System.out.println(queue.removeFirst());//3号
System.out.println(queue);//[4号]
}
}
2.遍历方式
package List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class traverse {
public static void main(String[] args) {
List<String> lists = new ArrayList<>();
lists.add("java1");
lists.add("java2");
lists.add("java3");
lists.add("java4");
/**
* (1)for循环
*/
System.out.println("----------------------------");
for (int i = 0; i < lists.size(); i++) {
String ele = lists.get(i);
System.out.println(ele);
}
/**
* (2)迭代器
*/
System.out.println("----------------------------");
Iterator<String> it = lists.iterator();
while(it.hasNext()){
String ele = it.next();
System.out.println(ele);
}
/**
* (3)foreach
*/
System.out.println("----------------------------");
for (String ele : lists) {
System.out.println(ele);
}
/**
* JDK8 之后的Lambda 的表达式
*/
System.out.println("----------------------------");
lists.forEach( s-> {
System.out.println(s);
});
}
}
3.删除元素
package List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
//1.准备数据
List<String> list = new ArrayList<>();
list.add("1");
list.add("名");
list.add("2");
list.add("Java");
list.add("Java");
list.add("Java");
list.add("之");
list.add("3");
list.add("以");
list.add("4");
list.add("父");
System.out.println(list);
//需求:删除所有的Java信息
//(1) 迭代器遍历删除
Iterator<String> it = list.listIterator();
while(it.hasNext()){
String ele = it.next();
if("Java".equals(ele)){
//list.remove("Java");
it.remove();//使用迭代器删除当前位置的元素,保证不后移能够成功的遍历到全部元素!
}
}
System.out.println(list);
//(2)foreach 遍历删除(会出现bug)
for (String s : list) {
if("Java".equals(s)){
list.remove("Java");
}
}
//(3)Lambda 表达式(会出现bug)
list.forEach(s->{
if("Java".equals(s)){
list.remove("Java");
}
});
//(4)for 循环(不会出现bug,但数据删除时会出现问题,会漏删元素)
for (int i = 0; i < list.size(); i++) {
String ele = list.get(i);
if("Java".equals(ele)){
list.remove("Java");
}
}
System.out.println(list);
//解决方法
for(int i= list.size() -1 ; i>=0 ; i-- ){
String ele = list.get(i);
if("Java".equals(ele)){
list.remove("Java");
i--;
}
}
System.out.println(list);
}
}