• ArrayList集合方法(自写)


    以下方法在使用时需要new一个新对象调用,输出时需要一个输出方法,否则输出的是地址

    1.最后位置插入

    1. //最后位置插入
    2. public void add(int element){
    3. if (size>=arr.length){
    4. capacity*=factor;
    5. int[] temp=new int[capacity];
    6. for (int i = 0; i
    7. temp[i]=arr[i];
    8. }
    9. arr=temp;
    10. }
    11. arr[size]=element;
    12. size++;
    13. }

    2.任意位置插入         

    1. //在任意位置插入
    2. //value 插入的值
    3. //index 插入的位置
    4. public void insert(int value,int index){
    5. if (index<0||index>size){
    6. System.out.println("插入位置不合理");
    7. return;
    8. }
    9. if (size== arr.length){
    10. //扩容
    11. capacity*=factor;
    12. int[] temp=new int[capacity];
    13. for (int i = 0; i
    14. temp[i]=arr[i];
    15. }
    16. arr=temp;
    17. }
    18. //插入位置以及插入位置以后的数据往后移动
    19. for (int i =size-1; i >=index ; i--) {
    20. arr[i+1]=arr[i];
    21. }
    22. //插入数据
    23. arr[index]=value;
    24. size++;
    25. }

    3.删除第一个复合条件的元素

    1. //删除第一个复合条件的数据
    2. public boolean delFirst(int value){
    3. boolean isFound=false;
    4. for (int i = 0; i < size ; i++) {
    5. if(arr[i]==value){
    6. //删除
    7. for (int j = i; j 1 ; j++) {
    8. arr[j]=arr[j+1];
    9. }
    10. size--;
    11. isFound=true;
    12. break;
    13. }
    14. }
    15. return isFound;
    16. }

    4.删除所有复合条件的元素 

    1. //删除所有复合条件的数据
    2. public boolean delete(int value){
    3. boolean isFound=false;
    4. //从后往前遍历可以删除两个相邻的复合条件的数据
    5. for (int i = size-1; i >=0 ; i--) {
    6. if(arr[i]==value){
    7. //删除
    8. for (int j = i; j 1 ; j++) {
    9. arr[j]=arr[j+1];
    10. }
    11. size--;
    12. isFound=true;
    13. }
    14. }
    15. return isFound;
    16. }

    5.在合适位置插入 

    1. //在合适位置插入
    2. public void orderInsert(int value){
    3. if (size== arr.length){
    4. //扩容
    5. capacity*=factor;
    6. int[] temp=new int[capacity];
    7. for (int i = 0; i
    8. temp[i]=arr[i];
    9. }
    10. arr=temp;
    11. }
    12. //插入
    13. if(size==0){
    14. arr[0]=value;
    15. }else if(value>arr[size-1]){
    16. arr[size]=value;
    17. }else {
    18. for (int i = 0; i
    19. if(arr[i]>value){
    20. //插入位置以及之后的数据往后移动
    21. for (int temp=size-1;temp>=i;temp--){
    22. arr[temp+1]=arr[temp];
    23. }
    24. arr[i]=value;
    25. break;
    26. }
    27. }
    28. }
    29. size++;
    30. }

    6.二分查找 

    1. //二分查找
    2. public int search(int value){
    3. int left=0;
    4. int right=size;
    5. while (left<=right){
    6. int mid=(left+right)/2;
    7. if(arr[mid]==value){
    8. System.out.println("找到了,下标为"+mid);
    9. return mid;
    10. }else if(arr[mid]>value){
    11. right=mid-1;
    12. }else {
    13. left=mid+1;
    14. }
    15. }
    16. System.out.println("没找到");
    17. return -1;
    18. }

     

  • 相关阅读:
    计算经纬度坐标之间的真实距离
    全球与中国板上芯片LED行业发展规模及投资前景预测报告2022-2028年
    说说Object类下面有几种方法呢?
    设计模式:代理模式详解
    关于Unity自带的保存简单且持久化数据PlayerPrefs类的使用
    初始Cpp之 八、类和对象
    复制集群架构设计技巧
    GBase 8s 常用函数
    操作系统MIT6.S081:P5->Isolation & system call entry/exit
    JDBC版本简介
  • 原文地址:https://blog.csdn.net/weixin_58474273/article/details/134277229