刷算法必要Java语言基础

发布时间:2026/7/13 1:58:34
刷算法必要Java语言基础 文章目录刷算法必要Java语言基础1.标准输出2.控制语句2.1 条件判断(if-else)2.2 循环(for/while)3.基本数据结构3.1 动态数组(ArrayList)3.2 双链表(LinkedList)3.3 队列(Queue)3.4 栈(Stack)3.5 哈希表(HashMap)3.6 哈希集合(HashSet)刷算法必要Java语言基础1.标准输出Java 的标准输出是System.out.println用于在控制台打印内容并换行。System.out.print可以用于不换行的输出。publicclassMain{publicstaticvoidmain(String[]args){inta10;System.out.println(a);System.out.println(Hello,World);Stringsabc;System.out.println(s a);System.out.printf(%s %d\n,s,a);}}2.控制语句2.1 条件判断(if-else)importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);intasc.nextInt();if(a5){System.out.println(a 5);}elseif(a5){System.out.println(a 5);}else{System.out.println(a 5);}}}2.2 循环(for/while)for循环一般用于已知循环次数的情况while循环一般用于未知循环次数的情况。publicclassMain{publicstaticvoidmain(String[]args){for(inti0;i5;i){System.out.print(i );}System.out.println();intnum100;while(num0){System.out.print(num );num/2;}System.out.println();}}3.基本数据结构3.1 动态数组(ArrayList)ArrayList是 Java 标准库中的动态数组实现。相比于固定大小的数组ArrayList可以根据需要动态调整大小。importjava.util.ArrayList;importjava.util.Arrays;publicclassMain{publicstaticvoidmain(String[]args){// 初始化示例ArrayListIntegernums1newArrayList();ArrayListIntegernums2newArrayList(Arrays.asList(1,3,5));}}importjava.util.ArrayList;importjava.util.Collections;publicclassMain{publicstaticvoidmain(String[]args){intn10;// 初始化 ArrayList大小为 10元素值都为 0ArrayListIntegernumsnewArrayList(Collections.nCopies(n,0));// 输出falseSystem.out.println(nums.isEmpty());// 输出10System.out.println(nums.size());// 在数组尾部插入一个元素 20nums.add(20);// 输出11System.out.println(nums.size());// 得到数组最后一个元素// 输出20System.out.println(nums.get(nums.size()-1));// 删除数组的最后一个元素nums.remove(nums.size()-1);// 输出10System.out.println(nums.size());// 可以通过索引直接取值或修改nums.set(0,11);// 输出11System.out.println(nums.get(0));// 在索引 3 处插入一个元素 99nums.add(3,99);// 删除索引 2 处的元素nums.remove(2);// 交换 nums[0] 和 nums[1]Collections.swap(nums,0,1);// 遍历数组// 输出0 11 99 0 0 0 0 0 0 0for(intnum:nums){System.out.print(num );}System.out.println();}}3.2 双链表(LinkedList)LinkedList是 Java 标准库中的双向链表实现。相比于ArrayListLinkedList在头部和尾部插入和删除元素时性能更好。一般来说当我们想在头部增删元素时会使用LinkedList因为它在头部增删元素的效率比ArrayList高。但当需要频繁通过索引访问元素时我们会使用ArrayList。importjava.util.Arrays;importjava.util.LinkedList;publicclassMain{publicstaticvoidmain(String[]args){// 初始化链表LinkedListIntegerlstnewLinkedList(Arrays.asList(1,2,3,4,5));// 检查链表是否为空输出falseSystem.out.println(lst.isEmpty());// 获取链表的大小输出5System.out.println(lst.size());// 在链表头部插入元素 0lst.addFirst(0);// 在链表尾部插入元素 6lst.addLast(6);// 获取链表头部和尾部元素输出0 6System.out.println(lst.getFirst() lst.getLast());// 删除链表头部元素lst.removeFirst();// 删除链表尾部元素lst.removeLast();// 在链表中插入元素// 移动到第三个位置lst.add(2,99);// 删除链表中某个元素lst.remove(1);// 遍历链表// 输出1 99 3 4 5for(intval:lst){System.out.print(val );}System.out.println();}}3.3 队列(Queue)Queue是 Java 标准库中的队列接口常用的实现类有LinkedList和PriorityQueue。这里以LinkedList为例。importjava.util.Queue;importjava.util.LinkedList;publicclassMain{publicstaticvoidmain(String[]args){// 初始化一个空的整型队列 qQueueIntegerqnewLinkedList();// 在队尾添加元素q.offer(10);q.offer(20);q.offer(30);// 检查队列是否为空输出falseSystem.out.println(q.isEmpty());// 获取队列的大小输出3System.out.println(q.size());// 获取队列的队头元素// 输出10System.out.println(q.peek());// 删除队头元素q.poll();// 输出新的队头元素20System.out.println(q.peek());}}3.4 栈(Stack)栈是一种后进先出LIFO的数据结构Java 提供了Stack类来实现栈的功能importjava.util.Stack;publicclassMain{publicstaticvoidmain(String[]args){// 初始化一个空的整型栈 sStackIntegersnewStack();// 向栈顶添加元素s.push(10);s.push(20);s.push(30);// 检查栈是否为空输出falseSystem.out.println(s.isEmpty());// 获取栈的大小输出3System.out.println(s.size());// 获取栈顶元素输出30System.out.println(s.peek());// 删除栈顶元素s.pop();// 输出新的栈顶元素20System.out.println(s.peek());}}3.5 哈希表(HashMap)HashMap是 Java 标准库中的哈希表实现提供了基于键值对key-value的存储可以高效的完成键值对的增删查改操作。importjava.util.HashMap;importjava.util.Map;publicclassMain{publicstaticvoidmain(String[]args){// 初始化哈希表HashMapInteger,StringhashmapnewHashMap();hashmap.put(1,one);hashmap.put(2,two);hashmap.put(3,three);// 检查哈希表是否为空输出falseSystem.out.println(hashmap.isEmpty());// 获取哈希表的大小输出3System.out.println(hashmap.size());// 查找指定键值是否存在// 输出Key 2 - twoif(hashmap.containsKey(2)){System.out.println(Key 2 - hashmap.get(2));}else{System.out.println(Key 2 not found.);}// 获取指定键对应的值若不存在会返回 null// 输出nullSystem.out.println(hashmap.get(4));// 获取指定键对应的值若不存在则返回默认值// 输出defaultValSystem.out.println(hashmap.getOrDefault(4,defaultVal));// 插入一个新的键值对hashmap.put(4,four);// 获取新插入的值输出fourSystem.out.println(hashmap.get(4));// 删除键值对hashmap.remove(3);// 检查删除后键 3 是否存在// 输出Key 3 not found.if(hashmap.containsKey(3)){System.out.println(Key 3 - hashmap.get(3));}else{System.out.println(Key 3 not found.);}// 遍历哈希表// 输出顺序可能不同// 1 - one// 2 - two// 4 - fourfor(Map.EntryInteger,Stringpair:hashmap.entrySet()){System.out.println(pair.getKey() - pair.getValue());}}}3.6 哈希集合(HashSet)HashSet是 Java 标准库中的哈希集合实现用于存储不重复的元素常见使用场景是对元素进行去重。importjava.util.Arrays;importjava.util.HashSet;publicclassMain{publicstaticvoidmain(String[]args){// 初始化哈希集合HashSetIntegerhashsetnewHashSet(Arrays.asList(1,2,3,4));// 检查哈希集合是否为空输出falseSystem.out.println(hashset.isEmpty());// 获取哈希集合的大小输出4System.out.println(hashset.size());// 查找指定元素是否存在// 输出Element 3 found.if(hashset.contains(3)){System.out.println(Element 3 found.);}else{System.out.println(Element 3 not found.);}// 插入一个新的元素hashset.add(5);// 删除一个元素hashset.remove(2);// 输出Element 2 not found.if(hashset.contains(2)){System.out.println(Element 2 found.);}else{System.out.println(Element 2 not found.);}// 遍历哈希集合// 输出顺序可能不同// 1// 3// 4// 5for(intelement:hashset){System.out.println(element);}}}