当前位置: 首页 > news >正文

数据结构Api

数据结构Api

Arrays

排序


Arrays.sort(int[] arr, int fromIndex, int toIndex, 比较器);   //一定是需要泛型

Arrays.sort(arr, (o1, o2) -> o2 - o1);   //数组全部 从大到小排序 跟Collections.sort()一样

Arrays.sort(arr, 0, 3, (o1, o2) -> o2 - o1);   //从大到小排序,只排序[0, 3)

列表

注意,ArrayList的扩容 需要将旧的数组的元素复制到新的数组,时间复杂度为O(n)

两种实现,ArrayList利于查找,LinkedList 利于增删。



List<Integer> list = new ArrayList<> ();
   // 添加元素
   list.add (1);
   list.add (2);
   list.add (5);
   list.add (6);
   System.out.println (list);
   // 移除 index = 1 的元素
   list.remove (1);
   System.out.println (list);
   // 移除元素 1 
   list.remove(Integer.valueOf (1));
   System.out.println (list);


   // 判断是否包含某个元素
   boolean contains = list.contains (6);
   System.out.println (contains);
   
   // 获取元素的个数
   int size = list.size ();
   System.out.println (size);

   // 判断是否为空
   boolean isEmpty = list.isEmpty ();
   System.out.println (isEmpty);
   
   //  获取 index = 1 的元素
   Integer res = list.get (1);
   System.out.println (res);
   
   // 清空 list
   list.clear ();
   System.out.println (list);




在这里插入图片描述


        LinkedList<Integer> stack=new LinkedList<> ();
        // 加入元素
        stack.push (1);
        stack.push (3);
        stack.push (5);
        stack.push (2);
        System.out.println(stack);
        
        // 弹出元素
        Integer popVal = stack.pop ();
        System.out.println (popVal);
        System.out.println (stack);
        
        // 栈大小
        System.out.println (stack.size ());
        // 栈顶元素
        System.out.println (stack.peek ());
        // 判断栈是否为空
        System.out.println (stack.isEmpty ());

队列

在这里插入图片描述


        LinkedList<Integer> queue=new LinkedList<> ();
        // 加入元素
        queue.offer (1);
        queue.offer (5);
        queue.offer (3);
        queue.offer (2);
        System.out.println (queue);

        // 弹出 队头元素
        Integer pollVal = queue.poll ();
        System.out.println (pollVal);
        System.out.println (queue);

        // 查看 队头元素
        System.out.println (queue.peek ());

        // 判断是否为空
        System.out.println (queue.isEmpty ());
        // 获取队列长度
        System.out.println (queue.size ());

双向队列

在这里插入图片描述


      LinkedList<Integer> queue=new LinkedList<> ();
        // 加入元素
        queue.offerFirst (1);
        queue.offerFirst (3);
        queue.offerLast (5);
        queue.offerLast (8);
        System.out.println (queue) ; //  3 1 5  8
        System.out.println (queue.pollFirst ()) ; // 3
        System.out.println (queue) ;

        System.out.println (queue.pollLast ()); // 8
        System.out.println (queue);

        // 队列长度
        System.out.println (queue.size ());
        // 判断队列是否为空
        System.out.println (queue.isEmpty ());

        // 查看 左侧队头
        System.out.println (queue.peekFirst ());
        // 查看 右侧队头
        System.out.println (queue.peekLast ());

优先队列

在Java中的实现是 PriorityQueue ,底层是一棵树, 以小根堆为例。对于任意结点来说,该节点的值比其左右孩子的值都要小。 (就是最上面的结点最小)。 大根堆类似,最上面结点最大


// 小根堆
PriorityQueue<Integer> queue = new PriorityQueue<> ((a, b) -> a - b);
// PriorityQueue<Integer> queue = new PriorityQueue<> (100,(a, b) -> a - b);
// 加入元素
queue.offer (1);
queue.offer (5);
queue.offer (3);
queue.offer (2);
System.out.println (queue);

// 获取 堆顶元素
Integer pollVal = queue.poll ();
System.out.println (pollVal); // 1
System.out.println (queue);

// 查看堆顶元素
System.out.println (queue.peek ());
// 判断堆是否为空
System.out.println (queue.isEmpty ());
// 查看堆大小
System.out.println (queue.size ());


Set

在这里插入图片描述


/**
  * Set集合是一种 不允许有重复元素的集合
  *    无序的
  *    无索引
  *    不能有重复元素
  *    允许有一个null
  */
 HashSet<Integer> set = new HashSet<> ();
 set.add (1);
 set.add (2);
 set.add (null);
 set.add (2);
 set.add (3);
 set.add (4);
 
 // 打印Set集合
 System.out.println (set);
 int size = set.size ();
 
 // 打印Set集合的大小
 System.out.println (size);

 boolean empty = set.isEmpty ();
 
 // 打印Set集合是否为空
 System.out.println (empty);
 
 boolean contains = set.contains (1);
 System.out.println (contains);
 
 // 移除指定元素
 set.remove (1);
 System.out.println (set);
 
 // 清空Set集合
 set.clear ();


Map

在这里插入图片描述



// HashMap 无序
// 可存储自定义对象
Map<String, Integer> map = new HashMap<> ();
// 添加元素 put
map.put ("小米", 2000);
map.put ("华为", 3000);
map.put ("苹果", 5000);
System.out.println (map);

/**
 * 键 不存在,直接添加键值对
 * 键 存在,覆盖
 */
map.put ("苹果", 6000);
System.out.println (map);


// putIfAbsent 不存在键时,才添加
map.putIfAbsent ("小米", 1000);
System.out.println (map);

// 获取键对应的值,不存在 返回null
Integer huawei = map.get ("华为");
System.out.println ("华为价格:" + huawei);
Integer huaweiS = map.get ("华为s");
System.out.println ("华为s价格:" + huaweiS);

// 获取键对应的值,不存在 返回默认值
Integer huaweiS2 = map.getOrDefault ("华为s", 9999);
System.out.println ("华为s价格:" + huaweiS2);

System.out.println ("=========================");
/**
 * 获取 键值对集合 来遍历map
 */
Set<Map.Entry<String, Integer>> entries = map.entrySet ();
for (Map.Entry<String, Integer> entry : entries) {
    String key = entry.getKey ();
    Integer value = entry.getValue ();
    System.out.println (key + " " + value);
}
System.out.println ("=========================");
/**
 * 获取所有的键
 */

Set<String> keySet = map.keySet ();
for (String key : keySet) {
    Integer val = map.get (key);
    System.out.println (key + " " + val);
}
System.out.println ("=========================");


/**
 *  Lambda表达式 遍历map
 */
map.forEach ((k, v) -> {
    System.out.println (k + " " + v);
});
System.out.println ("=========================");

// 删除键值对,返回值是 键对应的值
Integer val = map.remove ("小米");
System.out.println (val);
System.out.println (map);
System.out.println ("=========================");
// 判断键是否存在
boolean keyHua = map.containsKey ("华为");
boolean keyXm = map.containsKey ("小米");
System.out.println ("华为:" + keyHua + " " + "小米:" + keyXm);
System.out.println ("=========================");
// 判断值是否存在
boolean containsValue = map.containsValue (1000);
System.out.println ("值是否存在:" + containsValue);
System.out.println ("=========================");
// 判断是否为空
boolean empty = map.isEmpty ();
System.out.println ("map为空:" + empty);
System.out.println ("=========================");

// 集合大小
int size = map.size ();
System.out.println ("集合大小:" + size);
System.out.println ("=========================");
// 清空集合
map.clear ();



字符串

equals()

在这里插入图片描述


String s1="abc"; // 字符串池
// 字符串对象
String s2=new String ("aBc");
System.out.println (s1==s2); // 比较地址值  false
System.out.println (s1.equals (s2)); // 比较字符串内容 false
System.out.println (s1.equalsIgnoreCase (s2)); // 比较字符串内容,忽略大小写 true
	

charAt() 、toCharArray() 、length()

在这里插入图片描述


 Scanner scanner = new Scanner (System.in);

 System.out.println ("请输入字符串:");
 String s = scanner.nextLine ();
 /*for (int i = 0; i < s.length (); i++) {

     System.out.print (s.charAt (i) + " ");
 }*/
 char[] chars = s.toCharArray ();
 for (char aChar : chars) {
     System.out.print (aChar+" ");
 }


substring()

在这里插入图片描述


String s = "abcdefg";
String substring = s.substring (1, 4);  // len = 4 -1 = 3,返回值才是截取后的结果
System.out.println (substring); // bcd


// 手机号中间四位屏蔽
String s = "15155644987";
// 截取前三位
String s1 = s.substring (0, 3);
// 截取后四位
String s2 = s.substring (7, 11);
// String s2 = s.substring (7);
String res = s1 + "****" + s2;
System.out.println (res);


trim() 返回 去除前后空格的新字符串 — O(n)

indexOf(String str)

返回str第一个出现的位置(int),没找到 则返回-1。 — O(m * n) m为原串长度, n为str长度

(假如要找一个字符char c,str可以表示成 String.valueOf© ,然后作为参数传进去.

s.indexOf(String str, int fromIndex); // 同上,但从fromIndex开始找 — O(m * n)

lastIndexOf(String str);

返回str最后出现的位置(int),没找到则返回-1。 — O(m * n) m为原串长度, n为str长度
(假如要找一个字符char c,str可以表示成String.valueOf©,然后作为参数传进去.

lastIndexOf(String str, int fromIndex); // 同上,
但从fromIndex开始从后往前找 [0 <- fromIndex] — O(m * n)

replace()

在这里插入图片描述


// 手机号中间四位屏蔽
String talk = "你玩的真好,他妈不要再玩了,TMD,SB,给我去死,傻逼东西";

// 定义敏感词库
String[] dicts = {"TMD", "SB", "MLGB", "你妈", "傻逼", "去死", "他妈"};

for (String dict : dicts) {
	// 替换后 赋给原字符串
    talk = talk.replace (dict, "***");
}
System.out.println (talk);

split() 、 toLowerCase() 、toUpperCase()


split(String regex);    // 返回 String[],以regex(正则表达式)分隔好的字符换数组。 ---- O(n)

// For example
// 从非"/"算起 若"/a/c" -> 会变成"" "a" "c"
String[] date = str.split("/");     // date[0]:1995 date[1]:12 date[2]:18 --- O(n)

s = s.toLowerCase();    // 返回一个新的字符串全部转成小写 --- O(n)
s = s.toUpperCase();    // 返回一个新的字符串全部转成大写 --- O(n)

字符串拼接 StringBuilder

字符串 拼接

字符串 反转

在这里插入图片描述


StringBuilder sb = new StringBuilder ("abc");
sb.append (1);
sb.append (2.3);
sb.append (true);
System.out.println (sb.toString ());
StringBuilder reverse = sb.reverse ();
int length = sb.length ();
System.out.println (length); // 字符串长度
// 字符串反转
System.out.println (reverse.toString ());


数学

Math 类


        // abs  求绝对值
        System.out.println (Math.abs (-2));
        System.out.println (Math.abs (2));
        // ceil   往 数轴的正方向进一,参数是double类型的,返回值是double类型的
        System.out.println (Math.ceil (3.14)); // 4
        System.out.println (Math.ceil (3.99)); // 4
        System.out.println (Math.ceil (-3.14)); // -3
        System.out.println (Math.ceil (-3.99)); // -3
        // floor  往 数轴的负方向进一,参数是double类型的,返回值是double类型的
        System.out.println (Math.floor (-3.14)); // -4
        System.out.println (Math.floor (-3.99)); // -4
        System.out.println (Math.floor (3.99)); // 3
        System.out.println (Math.floor (3.14)); // 3

        // max  求最大值,参数可以是int、double、float、long等
        System.out.println (Math.max (1, 2)); // 2
        System.out.println (Math.max (2, 1)); // 2
        System.out.println (Math.max (2, 5)); // 5

        // min  求最小值,参数可以是int、double、float、long等
        System.out.println (Math.min (1, 2)); // 1
        System.out.println (Math.min (2, 1)); // 1
        System.out.println (Math.min (2, 5)); // 2
        // pow  求幂, 第一个参数是底数, 第二个参数是指数,参数类型是double类型的
        // 结果是一个double类型的数
        System.out.println (Math.pow (2, 3)); // 8
        System.out.println (Math.pow (2, 4)); // 16
        System.out.println (Math.pow (2, 5)); // 32
        // round  四舍五入,参数是double类型的,返回值是long类型的
        System.out.println (Math.round (3.14)); // 3
        System.out.println (Math.round (3.5)); // 4
        System.out.println (Math.round (3.99)); // 4
        System.out.println (Math.round (-3.14)); // -3



Integer


     // 将字符串转换为int
     Integer integer = Integer.valueOf ("123");
     System.out.println (integer);
     // 求int的最大值
     int maxValue = Integer.MAX_VALUE;
     System.out.println (maxValue);
     // 求int的最小值
     int minValue = Integer.MIN_VALUE;
     System.out.println (minValue);
     // 将字符串转换为int ----->Integer.parseInt
     int i = Integer.parseInt ("4500");
     System.out.println (i);

相关文章:

  • 泛微e9 流程表单使用 显示属性联动 实现某个字段的显示与隐藏
  • 【愚公系列】《高效使用DeepSeek》017-知识点思维导图生成
  • 危化品经营单位考试:心理调适与知识巩固双管齐下​
  • 头部颤抖的预防措施
  • win10 如何用我的笔记本 接网线 远程控制 台式机
  • OpenNJet动态API设置accessLog开关,颠覆传统运维工作模式
  • “四预”驱动数字孪生水利:让智慧治水守护山河安澜
  • SIEMENS中集车辆PLM项目建设方案(96页PPT)(文末有下载方式)
  • excel文件有两列,循环读取文件两列赋值到字典列表。字典的有两个key,分别为question和answer。将最终结果输出到json文件
  • LCCI ESG 中英联合认证国际分析师适合的岗位
  • AUTOSAR_DoIP_Detailed
  • 计算机操作系统和进程
  • 基于java的ssm+JSP+MYSQL的高校四六级报名管理系统(含LW+PPT+源码+系统演示视频+安装说明)
  • Windows 11技巧:使用Powershell定义命令别名
  • 2025 年 AI 代码编辑器深度评测:Cursor Pro订阅与解锁自定义 AI 的无限潜能,实战案例全解析
  • 现代复古像素风品牌海报游戏排版设计装饰英文字体 Psygen — Modern Pixel Font
  • 再探C语言(1)
  • 如何利用iOS应用内事件提升订阅类应用表现?
  • Electron打包文件生成.exe文件打开即可使用
  • Deflate和Gzip压缩在HTTP响应中的作用与实现
  • 中央宣传部、全国总工会联合发布2025年“最美职工”先进事迹
  • 辽宁辽阳市白塔区一饭店火灾事故举行新闻发布会,现场为遇难者默哀
  • 南京航空航天大学启动扁平化改革:管理岗规模控制在20%,不再统一设科级机构
  • “即买即退”扩容提质,上海静安推出离境退税2.0版新政
  • 中国黄金协会:一季度我国黄金产量同比增1.49%,黄金消费量同比降5.96%
  • “五一”假期全国口岸日均出入境人员将达215万人次