一、List
ArrayList<>(变长数组)实现
add( ):在末尾添加一个元素
clear( ):清空
size( ):返回长度
isEmpty( ):是否为空
get(i):获取第i个元素
set(i, val):将第i个元素设置为val
(1)add( )、size( )、get( i )
package 做题;
import java.lang.reflect.Array;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import javax.naming.StringRefAddr;
import org.jcp.xml.dsig.internal.MacOutputStream;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
final int N = 10;
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
// 两种遍历方式
//方式1:普通for循环
for(int i = 0 ; i < list.size() ; i ++) System.out.printf("%d ",list.get(i));
System.out.println();
//增强for循环
for(int x: list) System.out.printf("%d ",x);
}
}
(2)clear( )
package 做题;
import java.lang.reflect.Array;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import javax.naming.StringRefAddr;
import org.jcp.xml.dsig.internal.MacOutputStream;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
final int N = 10;
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.clear();
System.out.print(list);
}
}
(3)isEmpty( )
package 做题;
import java.lang.reflect.Array;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import javax.naming.StringRefAddr;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
final int N = 10;
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
if(list.isEmpty() == true) System.out.println("空");
else System.out.println("不空");
}
}
(4)set(i, val)
package 做题;
import java.lang.reflect.Array;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import javax.naming.StringRefAddr;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
final int N = 10;
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
for(int i = 0 ; i < list.size() ; i ++) list.set(i,1);
for(int x:list) System.out.printf("%d ",x);
}
}
LinkedList<> (双链表)实现
只需修改上面代码的其中一条语句,然后导入新的类,其他的代码和上边一模一样!!!
List<Integer> list = new LinkedList<>();
讲一下ArrayList<>和LinkedList<>的区别:
1、ArrayList 和LinkedList结构不同
可以说ArrayList和LinkedList除了是同属于集合类,其他都是不同的,因为他们本身的实现是两种不同的实现方式,ArrayList 维护的是一个动态数组,LinkedList维护的是一个双向链表,而他们之间的不同是数组与链表的特性比较;
效率不同
LinkedList添加删除快
4、查询数据
ArrayList比LinkedList快;
二、Stack<>
push():压入元素
get():得到元素的值
pop():弹出栈顶元素,并返回栈顶元素
peek():返回栈顶元素
size():返回长度
empty():栈是否为空
clear():清空
package 做题;
import java.lang.reflect.Array;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;
import javax.naming.StringRefAddr;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
final int N = 10;
Stack<Integer> stk = new Stack<>();
// 栈中压入元素
stk.push(1);
stk.push(2);
stk.push(3);
// 遍历栈
for(int i = 0 ; i < stk.size() ; i ++) System.out.printf("%d ",stk.get(i));
System.out.println();
// 返回栈顶元素
System.out.println(stk.peek());
// 弹出栈顶元素
stk.pop();
for(int i = 0 ; i < stk.size() ; i ++) System.out.printf("%d ",stk.get(i));
System.out.println();
// 判断是否空
if(stk.isEmpty()) System.out.println("空");
else System.out.println("不空");
// 清空栈
stk.clear();
}
}
三、