java list介绍
本文介绍了Java中List接口及其实现类的使用。List作为Collection的子接口,提供了线性表数据结构的基本操作,包括增删改查等方法。重点讲解了ArrayList的实现原理,包括动态扩容机制和使用方式。通过模拟实现List接口展示了顺序表的基本操作,如add、remove、contains等。文章还演示了ArrayList的实际应用场景,包括洗牌游戏和杨辉三角的实现,展示了List在集合框架中的灵活运用。最后比较了ArrayList与Vector的线程安全性差异,指出ArrayList适用于单线程环境。
什么是List 继承自Collection

Collection也是一个接口,容器里有常用的一些方法具体有

List使用
List是一个接口 并不能直接用来实例化
线性表
顺序表
模拟实现List接口内的方法
import java.awt.*;
import java.awt.List;
import java.util.Arrays;
/**
* Created with IntelliJ IDEA.
* Description:
* User: 28931
* Date: 2026-03-14
* Time: 20:22
*/
public class fanxing extends List {
public int[] array=new int[10];
public int contt;
private int pos;
//在末尾新增元素
public void add(int data){
man();
this.array[this.contt]=data;
contt++;
}
//判断是否越界如果越界 数组扩容
private void k(){
array=Arrays.copyOf(array,2*array.length);
}
private void man(){
if(contt==10){
System.out.println("数组已满,扩容中");
k();
}
}
// 在 pos 位置新增元素
public void add(int pos, int data){
if(pos<0|pos>this.contt){
throw new Zuobaio("数组越界");
}
man();
for (int i = contt;i>=pos; i--) {
array[i+1]=array[i];
}
array[pos]=data;
contt++;
}
// // 判定是否包含某个元素; { };
public boolean contains(int toFind){
for (int i = 0; i < this.contt; i++) {
if(array[i]==toFind){
return true;
}
}
return false;
}
// // 查找某个元素对应的位置
public int indexOf(int toFind) {
for (int i = 0; i < this.contt; i++) {
if(array[i]==toFind){
return i;
}
}
return -1;
}
// 获取 pos 位置的元素
public int get(int pos) throws Zuobaio {
for (int i = 0; i < contt; i++) {
if(i==pos){
return array[i];
}
}
return -1;
}
// // 给 pos 位置的元素设为 value
public void set(int pos, int value) {
if(pos<0|pos>this.contt){
throw new Zuobaio("坐标buhefa");
}
array[pos]=value;
}
// //删除第一次出现的关键字key
public void remove(int toRemove) {
for (int i = 0; i < this.contt; i++) {
if(array[i]==toRemove){
array[i]=0;
return;
}
}
}
// 获取顺序表长度
public int sizef(){
return this.contt;
}
// // 清空顺序表
public void clear(){
this.contt=0;
}
// //打印
public void dayin(){
for (int i = 0; i < contt; i++) {
System.out.print(array[i]+" ");
}
}
public static void main(String[] args) {
fanxing q=new fanxing();
q.add(1);
q.add(1);
q.add(1,1);
q.set(1,2);
q.remove(2);
q.dayin();
}
}
/**
* Created with IntelliJ IDEA.
* Description:
* User: 28931
* Date: 2026-03-15
* Time: 10:12
*/
public class Zuobaio extends RuntimeException{
public Zuobaio(){
}
public Zuobaio(String name){
super(name);
}
}
/**
* Created with IntelliJ IDEA.
* Description:
* User: 28931
* Date: 2026-03-15
* Time: 9:47
*/
public interface List {
// 将顺序表的底层容量设置为initcapacity
// 新增元素,默认在数组最后新增
void add(int data);
// 在 pos 位置新增元素
void add(int pos, int data);
// 判定是否包含某个元素; { };
public boolean contains(int toFind);
// 查找某个元素对应的位置
int indexOf(int toFind) ;
// 获取 pos 位置的元素
int get(int pos) ;
// 给 pos 位置的元素设为 value
void set(int pos, int value) ;
//删除第一次出现的关键字key
void remove(int toRemove) ;
// 获取顺序表长度
int sizef();
// 清空顺序表
void clear() ;
//打印
void dayin();
}
ArrayList简介
Arryay的使用
public class Test {
public static void main(String[] args) {
ArrayList<Integer> a=new ArrayList(10);
a.add(1);
}
}

Aryyay的遍历
//for循环
for (int i = 0; i < a.size(); i++) {
System.out.println(a.get(i));
}
//each
for (Integer b:a){
System.out.println(b);
}
//迭代器
ArrayList的扩容机制
洗牌游戏
package pai;
/**
* Created with IntelliJ IDEA.
* Description:
* User: 28931
* Date: 2026-03-15
* Time: 15:24
*/
public class wanpai {
public wanpai(String yangzi,int pack) {
this.yangzi = yangzi;
this.pack=pack;
}
@Override
public String toString(){
return "["+yangzi+pack+"]";
}
public int pack;
public String yangzi;
}
买牌 发牌
package pai;
import org.jetbrains.annotations.NotNull;
import java.util.*;
/**
* Created with IntelliJ IDEA.
* Description:
* User: 28931
* Date: 2026-03-15
* Time: 15:25
*/
public class guize {
//买牌
private static final String[] e={"♥","♠","♣","♦"};
//买牌
public List<wanpai> mai(){
List<wanpai> f=new ArrayList<>();
for (int i = 0; i < 13; i++) {
for (int j = 0; j< 4; j++) {
String yangzi=e[j];
int pack=i+1;
wanpai r=new wanpai(yangzi,pack);
f.add(r);
}
}
return f;
}
//洗牌
public void xi(List<wanpai> f){
Random a=new Random();
for (int i =f.size()-1;i>0;i--){
int j=a.nextInt(i);
swp(f,i,j);
}
}
public void swp(List<wanpai> a,int i,int j){
wanpai tmp=a.get(i);
a.set(i,a.get(j));
a.set(j,tmp);
}
}
主方法
package pai;
import org.jetbrains.annotations.NotNull;
import java.util.*;
/**
* Created with IntelliJ IDEA.
* Description:
* User: 28931
* Date: 2026-03-15
* Time: 15:25
*/
public class main {
public static void main(String[] args) {
guize a = new guize();
List<wanpai> f = a.mai();
//买牌
System.out.println(f);
//洗牌
a.xi(f);
System.out.println(f);
//发牌
List<List<wanpai>> r = new ArrayList<>();
r.add(new ArrayList<>());
r.add(new ArrayList<>());
r.add(new ArrayList<>());
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
r.get(j).add(f.remove(0));
}
}
//剩下的牌
System.out.println(f);
//第一个人的牌
System.out.println(r.get(0));
//第二个人的牌
System.out.println(r.get(1));
//第三个人的牌
System.out.println(r.get(2));
}
}
杨辉三角
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> a=new ArrayList<>();
List<Integer> b=new ArrayList<>();
b.add(1);
a.add(b);
for(int i=1;i<numRows;i++){
List<Integer> e=new ArrayList<>();
e.add(1);
List<Integer> q =a.get(i-1);
for(int j=1;j<i;j++){
int w=q.get(j);
int t=q.get(j-1);
e.add(w+t);
}
e.add(1);
a.add(e);
}
return a;
}
}
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)