- 浏览: 362665 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (511)
- AgileMethodology (4)
- RDBMS (32)
- NoSQL (16)
- Java (27)
- Python (28)
- Maven (15)
- Linux (27)
- CommonUtils (13)
- IDE (8)
- JavaScript (17)
- jQuery (2)
- OSGi (2)
- JavaWeb (5)
- Spring (37)
- Struts2 (3)
- ORM (13)
- Ant (1)
- apache-tiles (1)
- FreeMarker (2)
- JSON (8)
- XML (1)
- JUnit (3)
- Lucene (1)
- Web Service (9)
- Design Pattern (13)
- Algorithm (21)
- JVM (14)
- Hadoop (16)
- Spark (5)
- Scala (31)
- Git (4)
- Server (3)
- Node.js (18)
- Concurrent (42)
- Lock (9)
- Collections (3)
- Network (11)
- MicroService (7)
- Docker (13)
- FP (20)
- spring.io (2)
- ELK (1)
- Kafka (5)
最新评论
递归方式计算阶乘
package com.fairy.io; public class Recursion { // 循环方式计算阶乘,又叫做迭代方式 public int compute(int number) { int result = 1; for (int i = number; i > 0; i--) { result *= i; } return result; } // 使用递归方式计算阶乘 public int compute2(int number) { if (1 == number) { return 1; } else { return number * compute2(number - 1); } } public static void main(String[] args) { Recursion test = new Recursion(); System.out.println(test.compute(5)); System.out.println(test.compute2(5)); } }
递归方式计算斐波那契数列
package com.fairy.io; public class Fibonacci { // 使用递归计算斐波那契数列 public int compute(int n) { if (1 == n || 2 == n) { return 1; } else { return compute(n - 1) + compute(n - 2); } } public static void main(String[] args) { Fibonacci fibonacci = new Fibonacci(); System.out.println(fibonacci.compute(1)); System.out.println(fibonacci.compute(2)); System.out.println(fibonacci.compute(3)); System.out.println(fibonacci.compute(4)); System.out.println(fibonacci.compute(5)); System.out.println(fibonacci.compute(6)); } }
删除一个文件目录下的所有文件,采用递归实现
package com.fairy.io; import java.io.File; public class FileTest7 { public static void deleteAll(File file) { if (file.isFile() || file.list().length == 0) { file.delete(); } else { File[] files = file.listFiles(); for (File f : files) { deleteAll(f); f.delete(); } } } public static void main(String[] args) { deleteAll(new File("C:/abc")); } }
罗列出一个文件目录下的所有文件,采用递归实现。
Version1:
package com.fairy.io; import java.io.File; import java.util.ArrayList; import java.util.List; public class FileTest8 { // 用于判断目录或文件所处的层次 private static int time; public static void deepList(File file) { if (file.isFile() || 0 == file.listFiles().length) { return; } else { File[] files = file.listFiles(); files = sort(files); for (File f : files) { StringBuilder output = new StringBuilder(); if (f.isFile()) { output.append(getTabs(time)); output.append(f.getName()); } else { output.append(getTabs(time)); output.append(f.getName()); output.append("\\"); } System.out.println(output); if (f.isDirectory()) { time++; deepList(f); time--; } } } } // 整理文件数组,使得目录排在文件之前 private static File[] sort(File[] files) { List<File> sorted = new ArrayList<File>(); for (File f : files) { if (f.isDirectory()) { sorted.add(f); } } for (File f : files) { if (f.isFile()) { sorted.add(f); } } return sorted.toArray(new File[files.length]); } // 判断需要加多少tab的方法 private static String getTabs(int time) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < time; i++) { sb.append("\t"); } return sb.toString(); } public static void main(String[] args) { File file = new File("D:/Util"); deepList(file); } }
Version2:
import java.io.File; public class ListFileDemo { public static void main(String[] args) { File file = new File("C:/Documents and Settings/root/桌面"); list(file); } public static void list(File file) { if (file.isDirectory()) { File[] files = file.listFiles(); if (files != null) { for (File f : files) { list(f); } } } System.out.println(file); } }
发表评论
-
Java 8 获取当前日期
2018-12-12 14:38 654原创转载请注明出处:https://agilestyle. ... -
abstract class 和 interface区别
2017-09-06 23:12 364原创转载请注明出处:http://agilestyle.i ... -
Difference between <? super T> and <? extends T>
2017-05-24 10:34 448原创转载请注明出处:http://agilestyle.i ... -
a=a+b和a+=b的区别
2017-03-02 22:47 616原创转载请注明出处:http://agilestyle.i ... -
Java Object 九大方法
2017-02-22 21:46 354原创转载请注明出处:http://agilestyle.i ... -
Java Collections Framework Diagram
2016-12-14 15:43 384原创转载请注明出处:http://agilestyle.i ... -
Java三大领域+Python的技能图谱
2016-08-25 09:48 1768转自:来吧 主流编程语言图谱+知识库都在这了 Ja ... -
Top 8 Diagrams for Understanding Java(转)
2016-08-23 10:24 269转自:http://www.programcreek.co ... -
stream classdesc serialVersionUID = 1, local class serialVersionUID = 2
2016-05-27 14:56 3355原创转载请注明出处:http://agilestyle.i ... -
技术资料链接
2016-03-19 12:59 556LeeCode http://www.cnblogs.c ... -
Java取模
2015-09-13 11:41 704取模的规律:取模的结果符号永远与被除数的符号相同 pack ... -
Java面试——字符串
2013-09-18 22:53 917String中的常用方法 1.写出下面程序的输出结 ... -
Java面试——数组
2013-09-18 22:22 8951.下面哪几个选项是合 ... -
数据类型转换
2013-09-17 22:27 780数据类型的转换方式 ... -
Java面试——数据类型及类型转换
2013-09-16 22:42 13521.int和Integer有什么区别? 2.下面选 ... -
实例成员和类成员的区别
2013-09-16 12:05 1136下面关于实例成员的说法,哪些是正确的?CD A.实例成员也 ... -
clone() 方法
2013-03-11 13:54 768在应用开发过程中,我们可能会需要拷贝(copy)一个现有的 ... -
多线程实现方法
2013-03-06 11:05 701两种实现方法: 继承Thread类, 实现Runna ... -
Thread common example
2012-08-02 16:48 7601.设计 4 个线程,其中两个线程每次对 j增加1,另外两个线 ... -
Polymorphism classic example
2012-07-27 16:01 865The classic example in OOP is t ...
相关推荐
3. **字符串与文本I/O**:"09reviewStringTextIO.doc"涵盖了Java中处理字符串的方法,如String类的常用API,以及文本文件的读写操作。可能会讲解FileReader、FileWriter、BufferedReader和BufferedWriter等类的使用...
Files, I/O Streams, XML Serialization Concurrency for Optimal Multi-Core Performance, JavaFX Concurrency APIs Generics and Generic Collections Recursion, Database (JDBC™ and JPA) Keep in Touch ...
首先,我们要了解Java如何处理文件I/O操作。在Java中,我们可以使用`java.io`包中的类来读取、写入和操作文件。在这个示例中,`FileInputStream`用于读取MP3文件,而`FileOutputStream`则用于将这些文件的内容写入到...
3. **递归排序(Recursion)**: 分区操作完成后,对枢轴左边和右边的子序列分别进行快速排序。如果子序列只有一个或没有元素,那么排序结束;否则,重复上述步骤。 以下是一个简单的Java实现快速排序的代码示例...
5. **输入/输出(I/O)**:Fortran95提供了多种方式来读写文件,包括格式化和非格式化的I/O,以及直接访问文件。 6. **错误处理(Error Handling)**:与早期版本相比,Fortran95增加了异常处理和错误检查功能,帮助...
- **递归排序(Recursion)**:对左右两个子序列分别进行快速排序,直到子序列只有一个或没有元素,排序结束。 3. **Java代码实现**: 在给定的代码中,`quicksort`方法实现了快速排序的核心逻辑: - 参数`stru...
### Java初级知识要点详解 #### 一、Java概述与基础知识 **1. 何为编程?** 编程是指通过编写计算机程序来实现特定功能的过程。它涉及使用特定的编程语言(如Java),按照一定的规则和逻辑组织代码,以解决具体...
### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是一种广泛...
3. **递归排序(Recursion)**:对左右两个子序列分别进行快速排序,直到所有元素都在正确的位置上。 快速排序的平均时间复杂度为O(n log n),在最坏的情况下(即输入序列已经完全有序或完全逆序)时间复杂度为O(n^2)...
冒泡排序的时间复杂度为O(n^2),适合小规模数据的排序。以下是一个简单的Java实现: ```java void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i ; i++) { for (int j = 0; j < n - i - 1; j+...
快速排序的平均时间复杂度为O(n log n),在最坏的情况下(输入数组已排序或逆序),时间复杂度为O(n^2)。但在实际应用中,由于其优秀的平均性能,快速排序被广泛使用。 **AlgorithmQuickSort.java** 文件很可能是...
- **Mixing I/O Libraries:** Discusses mixing different I/O libraries. - **Software Engineering: I/O:** Emphasizes good practices in input/output. - **C++ Compared with Java:** Continues the comparison...
快速排序的平均时间复杂度为O(n log n),在最坏的情况下,如果输入数组已经完全有序,时间复杂度会退化为O(n^2)。但这种情况在实际应用中很少出现,因此快速排序通常被认为是实际应用中最有效的通用排序算法之一。
在实际应用中,Java中的`Math.pow()`方法使用了更复杂的算法,如快速幂(Fast Exponentiation),结合了迭代和递归的思想,实现了接近于O(log n)的时间复杂度。 总结来说,对于幂函数的计算,迭代法在大多数情况下...
Monad在处理I/O、状态管理、异常处理等方面有着广泛的应用。 "category-theory" 是数学的一个分支,它探讨了结构和映射之间的普遍规律。在函数式编程中,范畴论提供了一种抽象思考工具,帮助我们理解各种概念如态射...