• Java数据结构技巧


    Java数据结构技巧

    1、循环

    for-each循环如果不是"[]"的数组类型,则需要提前判断数据结构是否为空,否则有可能会有空指针异常。

    2、对于List对象的i到j位进行排序

    for(List<String> now_result:result)
                {
                    List<String> sublist = now_result.subList(1,now_result.size());
                    Collections.sort(sublist);
                }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    sublist是指针,没有新创建对象,所以只排序sublist就可以实现对于[1,end]的排序。

    3、对于循环中的对象进行增删使用迭代器

    next() - 返回迭代器的下一个元素,并将迭代器的指针移到下一个位置。

    hasNext() - 用于判断集合中是否还有下一个元素可以访问。

    remove() - 从集合中删除迭代器最后访问的元素(可选操作)。

    // 引入 ArrayList 和 Iterator 类
    import java.util.ArrayList;
    import java.util.Iterator;
    
    public class RunoobTest {
        public static void main(String[] args) {
            ArrayList<Integer> numbers = new ArrayList<Integer>();
            numbers.add(12);
            numbers.add(8);
            numbers.add(2);
            numbers.add(23);
            Iterator<Integer> it = numbers.iterator();
            while(it.hasNext()) {
                Integer i = it.next();
                if(i < 10) {  
                    it.remove();  // 删除小于 10 的元素
                }
            }
            System.out.println(numbers);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    输出如果是字符串类型 需要谨慎复杂度

    例题
    美团2024届秋招笔试第一场编程真题 第五题
    在这里插入图片描述

    输入n

    import java.util.Scanner;
    
    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        private static final Scanner sc = new Scanner(System.in);
    
        public static void main(String[] args) {
            question05();
        }
    
      private static void question05() {
        int left = 1, right = sc.nextInt();
        StringBuilder sb = new StringBuilder();
        while (left < right) {
          sb.append(left++).append(" ").append(right--).append(" ");
        }
        if (left == right) {
          sb.append(left);
        }
        System.out.println(sb);
      }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
  • 相关阅读:
    初始Hadoop
    代码审计之路之白盒挖掘机 | 技术精选01
    Docker的overlay2目录占用磁盘根目录的解决办法
    [MAUI 项目实战] 手势控制音乐播放器(四):圆形进度条
    4. 吴恩达深度学习--优化算法
    MyBatis Plus详细教程
    java图形化界面编程之Swing
    反射机制(草稿)
    【C++笔试强训】第二十七天
    TCP习题总结
  • 原文地址:https://blog.csdn.net/yusude123456/article/details/133218353