Java語言Leetcode中常用的一些基礎語法

文章目錄

  • Java語言Leetcode中常用的一些基礎語法
    • 棧與隊列
      • 隊列
    • 類型轉換
      • 字符串與字符數組的轉換
      • 數組與 List 的轉換
    • 排序
      • 使用 Collections.sort()
      • 使用 List.sort()
      • 自定義對象排序

Java語言Leetcode中常用的一些基礎語法

棧與隊列

在Java中,棧通常可以通過 java.util.Stack 類來實現。Stack 類繼承自 Vector 類,提供了棧特有的操作方法。
棧是一種 后進先出(LIFO, Last In, First Out)結構。棧中的元素按順序排列,最后加入的元素最先被移除。棧的典型操作包括:

  • push:將元素推入棧頂。
  • pop:移除棧頂元素。
  • peek:查看棧頂元素,但不移除它。
  • isEmpty:檢查棧是否為空。

隊列

在Java中,隊列是通過 java.util.Queue 接口定義的,并有多個實現類。常見的實現類有:

  • LinkedList:最常用的隊列實現之一,它實現了 Queue 接口,因此提供了隊列操作方法。
  • PriorityQueue:一種基于優先級堆實現的隊列,其中的元素是按自然順序排序或由提供的比較器進行排序的。

常見的隊列操作有:

offer(E e):將元素插入隊列末尾。如果隊列能夠接受此元素,則返回 true,否則返回 false。
poll():移除并返回隊列頭部的元素。如果隊列為空,則返回 null。
peek():返回隊列頭部的元素但不移除它。如果隊列為空,則返回 null。
isEmpty():檢查隊列是否為空。
size():返回隊列中的元素個數。

在Java中,優先級隊列(PriorityQueue)是基于優先級堆實現的隊列,元素按照自然順序或自定義的比較器排序。默認情況下,PriorityQueue 會使用元素的 自然排序(即實現了 Comparable 接口的對象)。但是,如果你需要自定義排序規則,可以通過傳入一個比較器(Comparator)來控制元素的順序。

import java.util.PriorityQueue;
import java.util.Comparator;class Student {String name;int score;Student(String name, int score) {this.name = name;this.score = score;}@Overridepublic String toString() {return name + ": " + score;}
}public class PriorityQueueWithComparator {public static void main(String[] args) {// 自定義一個Comparator,按學生的分數降序排序Comparator<Student> byScoreDescending = new Comparator<Student>() {@Overridepublic int compare(Student s1, Student s2) {return Integer.compare(s2.score, s1.score); // 分數高的優先}};// 創建優先級隊列,并傳入自定義的比較器PriorityQueue<Student> queue = new PriorityQueue<>(byScoreDescending);// 向隊列中添加學生queue.add(new Student("Alice", 90));queue.add(new Student("Bob", 85));queue.add(new Student("Charlie", 95));// 打印隊列中的學生while (!queue.isEmpty()) {System.out.println(queue.poll()); // 按照分數從高到低打印學生}}
}

在Java中,雙端隊列(Deque, Double-Ended Queue)是一種隊列,它允許從兩端插入和移除元素。Deque 接口繼承自 Queue 接口,并提供了更多的操作方法,使得可以從隊列的兩端進行元素的添加和刪除。

Deque 接口
Deque 接口定義了雙端隊列的基本操作,包括:

  • addFirst(E e):將元素添加到隊列的頭部。
  • addLast(E e):將元素添加到隊列的尾部。
  • removeFirst():移除并返回隊列頭部的元素。
  • removeLast():移除并返回隊列尾部的元素。
  • getFirst():獲取隊列頭部的元素,但不移除它。
  • getLast():獲取隊列尾部的元素,但不移除它。
  • offerFirst(E e):將元素插入隊列頭部,如果隊列沒有容量,則返回 false。
  • offerLast(E e):將元素插入隊列尾部,如果隊列沒有容量,則返回 false。
  • pollFirst():移除并返回隊列頭部的元素,如果隊列為空,返回 null。
  • pollLast():移除并返回隊列尾部的元素,如果隊列為空,返回 null。

類型轉換

字符串與字符數組的轉換

  1. 字符串轉字符數組
    可以通過 String 的 toCharArray() 方法將字符串轉換為字符數組。

    String str = "hello";
    char[] charArray = str.toCharArray();
    
  2. 字符數組轉字符串
    可以通過 String 構造函數將字符數組轉換為字符串。

    char[] charArray = {'h', 'e', 'l', 'l', 'o'};
    String str = new String(charArray);
    

數組與 List 的轉換

  1. 數組轉 List
    可以使用 Arrays.asList() 方法將數組轉換為 List。但是要注意,使用 Arrays.asList() 返回的 List 是固定大小的,不支持增加或刪除元素。

    String[] array = {"apple", "banana", "cherry"};
    List<String> list = Arrays.asList(array);
    

    對于基本類型數組(如 int[]),需要轉換為對應的包裝類類型(如 Integer[]):

    int[] arr = {1, 2, 3, 4};
    List<Integer> list = Arrays.stream(arr)  // 將int[]轉為Stream.boxed()     // 轉換為Stream<Integer>.collect(Collectors.toList());
  2. List 轉數組:
    不管是List轉數組還是數組轉list都可以用for循環賦值實現。

排序

在 Java 中,排序列表(List)通常通過 Collections.sort() 或 List.sort() 方法實現。

使用 Collections.sort()

Collections.sort() 方法是 Java 中最常用的排序方法之一。它按照元素的自然順序對列表進行排序。該方法是基于歸并排序(MergeSort)實現的,因此具有 O(n log n) 的時間復雜度。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class SortListExample {public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(5);list.add(2);list.add(8);list.add(1);// 排序列表Collections.sort(list);// 打印排序后的列表System.out.println(list);  // 輸出: [1, 2, 5, 8]}
}

使用 List.sort()

List.sort() 是 Java 8 引入的另一種排序方法,它是 List 接口的方法,接受一個 Comparator。它可以用于自定義排序規則。

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;public class ListSortExample {public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(5);list.add(2);list.add(8);list.add(1);// 使用 List.sort() 和自定義比較器進行排序list.sort(Comparator.reverseOrder());  // 按降序排序// 打印排序后的列表System.out.println(list);  // 輸出: [8, 5, 2, 1]}
}

自定義對象排序

對于自定義對象(如類的實例),可以通過實現 Comparable 接口來定義排序規則,或者通過傳遞自定義的 Comparator 對象來控制排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;class Person implements Comparable<Person> {String name;int age;Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic int compareTo(Person other) {return Integer.compare(this.age, other.age);  // 按年齡升序排序}@Overridepublic String toString() {return name + ": " + age;}
}public class PersonSortExample {public static void main(String[] args) {List<Person> list = new ArrayList<>();list.add(new Person("Alice", 30));list.add(new Person("Bob", 25));list.add(new Person("Charlie", 35));// 使用 Collections.sort() 按年齡排序Collections.sort(list);// 打印排序后的列表System.out.println(list);  // 輸出: [Bob: 25, Alice: 30, Charlie: 35]}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896478.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896478.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896478.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ STL(三)list

目錄 list是什么 構造函數 元素訪問 容量操作 修改 迭代器 code實例 實現簡單的list forward_list是什么 構造函數 元素訪問 容量 修改 迭代器 code實例 實現一個簡單的forward_list list是什么 std::list 是 C 標準模板庫&#xff08;STL&#xff09;中的一個…

【Maui】系統找不到指定的文件Xamarin.Android.Aapt2.targets

文章目錄 前言一、問題描述二、解決方案三、軟件開發&#xff08;源碼&#xff09;四、項目展示 前言 .NET 多平臺應用 UI (.NET MAUI) 是一個跨平臺框架&#xff0c;用于使用 C# 和 XAML 創建本機移動和桌面應用。 使用 .NET MAUI&#xff0c;可從單個共享代碼庫開發可在 And…

sql server 復制從備份初始化數據

參考 &#xff1a; 從備份初始化訂閱&#xff08;事務&#xff09; - SQL Server | Microsoft Learn sql server 復制默認是用快照初始化數據的&#xff0c;也支持從備份初始化數據&#xff0c;參考如上

GDidees CMS v3.9.1本地文件泄露漏洞(CVE-2023-27179)

漏洞簡介&#xff1a; GDidees CMS v3.9.1及更低版本被發現存在本地文件泄露漏洞&#xff0c;漏洞通過位于 /_admin/imgdownload.php 的 filename 參數進行利用。 漏洞環境&#xff1a; 春秋云鏡中的漏洞靶標&#xff0c;CVE編號為CVE-2023-27179 漏洞復現: 進入靶場發現沒…

Redis面試題----MySQL 里有 2000w 數據,Redis 中只存 20w 的數據,如何保證 Redis 中的數據都是熱點數據?

要保證 Redis 中存儲的 20w 數據都是熱點數據&#xff0c;可以從數據篩選和數據淘汰兩個大的方面來考慮&#xff0c;以下是詳細的實現思路和方法&#xff1a; 數據篩選 1. 基于業務規則 分析業務場景&#xff1a;不同的業務場景有不同的熱點數據特征。例如&#xff0c;在電商…

【問題記錄】Go項目Docker中的consul訪問主機8080端口被拒絕

【問題記錄】Go項目Docker中的consul訪問主機8080端口被拒絕 問題展示解決辦法 問題展示 在使用docker中的consul服務的時候&#xff0c;通過命令行注冊相應的服務&#xff08;比如cloudwego項目的demo_proto以及user服務&#xff09;失敗。 解決辦法 經過分析&#xff0c;是…

【第十節】C++設計模式(結構型模式)-Flyweight( 享元)模式

目錄 一、問題背景 二、模式選擇 三、代碼實現 四、總結討論 一、問題背景 享元模式&#xff08;Flyweight Pattern&#xff09;在對象存儲優化中的應用 在面向對象系統的設計與實現中&#xff0c;創建對象是最常見的操作之一。然而&#xff0c;如果一個應用程序使用了過多…

spring boot 2.7 + seata +微服務 降級失敗問題修復

文章引流 一個簡單而使用的API管理工具 版本號 spring boot 2.7.17 spring-cloud-dependencies 2021.0.8 spring-cloud-circuitbreaker-resilience4j 2.1.7 spring-cloud-starter-alibaba-seata 2021.1 jdk 1.8原因分析 未配置屬性 feign.circuitbreaker.enabledtrue # 未…

實現實時數據倉庫開源項目

根據你的需求&#xff0c;以下是一些可以實現類似 ClickHouse 的實時數倉功能的項目&#xff0c;這些項目提供了高性能的數據處理和分析能力&#xff0c;適合實時數據倉庫的場景&#xff1a; 1. Apache Doris Apache Doris 是一個開源的實時數據倉庫&#xff0c;支持高吞吐量…

【字符串】最長公共前綴 最長回文子串

文章目錄 14. 最長公共前綴解題思路&#xff1a;模擬5. 最長回文子串解題思路一&#xff1a;動態規劃解題思路二&#xff1a;中心擴散法 14. 最長公共前綴 14. 最長公共前綴 ? 編寫一個函數來查找字符串數組中的最長公共前綴。 ? 如果不存在公共前綴&#xff0c;返回空字符…

Maven的傳遞性、排除依賴、生命周期、插件

一、Maven的傳遞性 藍色背景中的兩個jar包是projectA的直接依賴&#xff0c;其余的Jar包是projectA的間接依賴。 projectA可以使用直接依賴&#xff0c;也可以使用間接依賴。 maven-projectB項目引入了maven-projectC(整個項目打成了jar包&#xff09;和junit兩個jar包。 ma…

API,URL,Token,XML,JSON是干嘛的

API&#xff0c;URL&#xff0c;Token&#xff0c;XML&#xff0c;JSON是干嘛的 API的作用 API&#xff08;Application Programming Interface&#xff0c;應用程序編程接口&#xff09;是一組定義和協議&#xff0c;用于構建和交互軟件應用程序。API允許不同的軟件系統之間…

Spring Boot操作MaxComputer(保姆級教程)

目錄 引言 一、引入依賴 二、配置文件 application.properties&#xff08;信息用自己的奧&#xff09; 三、實體類User.java 四、UserController 五、UserService 六、UserDao 七、UserDao.xml 八、postman 訪問&#xff0c;成功查詢數據 附件(修改和刪除數據) 引言…

Java【網絡原理】(2)初識網絡續與網絡編程

目錄 1.前言 2.正文 2.1TCP協議與UDP協議 2.2socket API進行網絡編程 2.2.1DatagramPacket類 2.2.1.1發送數據報 2.2.1.2接收數據報 2.2.1.3獲取數據報內容 2.2.1.4設置數據報內容 2.2.2DatagramSocket類 2.2.2.1構造方法 2.2.2.2常用方法 2.2.3具體代碼與解釋 3…

【Oracle專欄】sqlplus顯示設置+腳本常用顯示命令

Oracle相關文檔&#xff0c;希望互相學習&#xff0c;共同進步 風123456789&#xff5e;-CSDN博客 1.內容概述 本文主要針對oracle 運維中常用知識點進行整理&#xff0c;包括&#xff1a; 1&#xff09;sqlplus模式下&#xff0c;為了方便查詢設置相應的行寬、列寬、行數。…

在一臺win10專業版設備上使用docker的怪現象

這臺設備上&#xff0c;wsl環境無法直接安裝docker&#xff0c;必須要在宿主機安裝Docker Desktop.然后&#xff0c;在wsl運行前&#xff0c;要先啟動docker desktop&#xff0c;否則&#xff0c;你看不到你自己創建的映像。 然后如果沒有docker desktop加持&#xff0c;你在嘗…

Unity 中Sirenix.OdinInspector 插件常用功能梳理

案例一 public class PracticeAssets : ScriptableObject {[SerializeField][Searchable][ListDrawerSettings(ShowIndexLabels true)][LabelText("練習版數據列表")]public List<PracticeData> Practicies new List<PracticeData>(); } 1. Serialize…

C++ | 面向對象 | 類

&#x1f47b;類 &#x1f47e;語法格式 class className{Access specifiers: // 訪問權限DataType variable; // 變量returnType functions() { } // 方法 };&#x1f47e;訪問權限 class className {public:// 公有成員protected:// 受保護成員private:// 私有成員 }…

從零開始用react + tailwindcss + express + mongodb實現一個聊天程序(五) 實現登錄功能

1.登錄頁面 完善登錄頁面 和注冊差不多 直接copy signUpPage 內容 再稍微修改下 import { useState } from "react"; import { useAuthStore } from "../store/useAuthStore"; import { MessageSquare,Mail,Lock,Eye, EyeOff,Loader2} from "lucide…

Spring Boot電影評論網站系統設計與實現

隨著互聯網和娛樂產業的發展&#xff0c;電影評論網站逐漸成為人們分享觀影體驗、交流影評的重要平臺。本文將介紹一個基于Spring Boot框架開發的電影評論網站系統的功能設計與實現方案。 功能模塊概述 該電影評論網站系統分為管理員模塊和用戶模塊兩大核心部分&#xff0c;以…