加载指定路径下所有文件

工作中经常遇到加载某个文件夹下的所有文件,然后对文件遍历,今天写代码时遇到一个好的类ArrayDeque,整理一下,做一下笔记

 下面写了一个测试类

package com.hpzx.test;import java.io.File;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;/**加载指定路径下的所有文件* @author ywf**/
public class ReadFilesTest {/*** @param args*/public static void main(String[] args) {String fileDir = "e:/Users/ywf/Desktop/新词识别测试数据";List<File> fileList = new ArrayList<File>();Queue<File> quene = new ArrayDeque<File>();quene.add(new File(fileDir));while(quene.size()>0){File file = quene.poll();if(file.isDirectory()){File[] files = file.listFiles();for(File f : files){if(f.isDirectory()){quene.add(f);}else{fileList.add(f);}}}else{fileList.add(file);}}System.out.println(fileList);}}

 转http://blog.csdn.net/kaiwii/article/details/7996111

Queue接口

public abstract boolean add(E paramE);

 

public abstract boolean offer(E paramE);

 

public abstract E remove();

 

public abstract E poll();

 

Queue接口提供了以上几个方法。

看了ArrayDeque类的源码。有以下几点总结:

1)ArrayDeque有两个类属性,head和tail,两个指针。

2)ArrayDeque通过一个数组作为载体,其中的数组元素在add等方法执行时不移动,发生变化的只是head和tail指针,而且指针是循环变化,数组容量不限制。

3)offer方法和add方法都是通过其中的addLast方法实现,每添加一个元素,就把元素加到数组的尾部,此时,head指针没有变化,而tail指针加一,因为指针是循环加的,所以当tail追上head((this.tail = this.tail + 1 & this.elements.length - 1) == this.head)时,数组容量翻一倍,继续执行。

4)remove方法和poll方法都是通过其中的pollFirst方法实现,每移除一个元素,该元素所在位置变成null,此时,tail指针没有变化,而head指针加一,当数组中没有数据时,返回null。

5)因为ArrayDeque不是线程安全的,所以,用作堆栈时快于 Stack,在用作队列时快于 LinkedList。

转载于:https://www.cnblogs.com/yuwenfeng/p/3927189.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日站立会议个人博客二

事件昨天干了什么优化了商品详细信息界面的多个图片显示方式今天要做什么对商品搜索结果页面进行深度优化&#xff0c;增加搜索筛选功能遇到的问题多图片显示实现过程中&#xff0c;图片的排列方式出现了问题。转载于:https://www.cnblogs.com/mqlblog/p/8063718.html

vmware安装minimal centos报错/etc/rc5.d/s99local : line

2019独角兽企业重金招聘Python工程师标准>>> 有人用vmware安装minimal centos报错/etc/rc5.d/s99local : line:25 : eject : command not found 。我们看下完整报错内容&#xff1a; Installing VMware Tools, please wait...mount: special device /dev/hda does n…

php print div,JavaScrip实现PHP print_r的数功能(三种方法)

方法一function print_r(theObj) {var retStr ;if (typeof theObj object) {retStr ;for (var p in theObj) {if (typeof theObj[p] object) {retStr [p] > typeof(theObj) ;retStr print_r(theObj[p]) ;} else {retStr [p] > theObj[p] ;}}retStr ;}re…

Android源代码下载方法具体解释

作者&#xff1a;张星 相信非常多下载过内核的人都对这个非常熟悉 git clone git://android.git.kernel.org/kernel/common.git kernel 可是这是在曾经&#xff0c;如今假设这么运行的话&#xff0c;会显演示样例如以下内容 Initialized empty Git repository in /home/star/w…

一些概念

1. 分布式锁&#xff1a;考虑利用redis的原子性特性&#xff0c;先确定redis中是否已处理过某个请求。如果没有&#xff0c;就创建&#xff0c;然后执行。执行完&#xff0c;清除redis里面的标记。因为redis是共享的&#xff0c;所以这种方式可以过滤掉重复请求引起的问题。 2.…

linux function

#!/bin/bashfunction sayHello() { #这里的{ 和它前面的)之间可以没有空格echo "Hello $1" }sayHello Neeky 转载于:https://www.cnblogs.com/JiangLe/p/5100271.html

后缀树(Suffix Trie)子串匹配结构

Suffix Trie 又称后缀Trie或后缀树。它与Trie树的最大不同在于&#xff0c;后缀Trie的字符串集合是由指定字符串的后缀子串构成的。比如、完整字符串"minimize"的后缀子串组成的集合S分…

java中的线程和进程,Java | 线程和进程,创建线程

一、线程与进程线程定义进程中执行的一个代码段&#xff0c;来完成不同的任务组成&#xff1a;线程ID&#xff0c;当前指令指针(PC)&#xff0c;寄存器集合(存储一部分正在执行线程的处理器状态的值)和堆栈进程定义执行的一段程序&#xff0c;一旦程序被载入到内存中准备执行就…

Maven的pom报错的解决方法

如果在MyEclipse里面导入项目,导入不了,如下图 接下来可以点击Import Maven Projects里的Action那一行Resolve Later. 点击Do Not Execute(add to pom)就可以正常导入了转载于:https://www.cnblogs.com/JimmySeraph/p/8068299.html

django零开始

2019独角兽企业重金招聘Python工程师标准>>> 安装。。。后查看 import django django.VERSION #输出版本号&#xff0c;目前自己是py2.7.9和django1.8 1&#xff0c;新建一个django-project django-admin.py startproject project-name 一个project一般为一个项目 …

php 大批量的删除图片,PHP批量删除记录同时删除图片文件

非常感谢老师的回答&#xff1a;全选&#xff0c;反选。已完成。可是PHP批量删除记录同时删除文件。代码不知怎么弄。请您给我代码好吗&#xff1f;if (!function_exists("GetSQLValueString")) {function GetSQLValueString($theValue, $theType, $theDefinedValue …

关于Python3.6下登陆接口的尝试

编者按&#xff1a;README:此代码为用户登陆界面&#xff0c;添加了寻求帮助选项。1.学习了基本数据类型&#xff0c;string, int&#xff0c;以及while循环&#xff0c;continue, break, if, elif, else条件语句&#xff0c;“x".format&#xff08;x&#xff09;变量替代…

堆溢出的DWORD Shoot核心原理-口语化

1、双向链表上有a、b、c一共3个连续的堆块&#xff0c;a、b、c三者之间的实际物理地址可能相差很大&#xff0c;但是绝对不会三者之间无其他字节&#xff0c;如果无其他字节&#xff0c;那表示他们三个可以合并成一个物理连接起来的大块&#xff0c;堆管理系统很快会让他们三者…

* 类描写叙述:字符串工具类 类名称:String_U

/******************************************* 类描写叙述&#xff1a;字符串工具类 类名称&#xff1a;String_U* ******************************************/public class String_U {private String_U() {}/*** 检查手机号是否合法* * param phoneNum* return boolean tru…

git 撤销 merging

当我们在合代码的时候经常会遇到一些问题&#xff0c;这时候分支就处于merging状态&#xff0c;这时候可以用下面的命令撤销$ git reset --hard HEAD (or sha_1) 不知道有没有更好的办法&#xff0c;希望大家能给出自己的办法 转载于:https://www.cnblogs.com/WangHaiMing/p/80…

php 命令安装tp5,tp5.1框架的下载与安装方法步骤(图文)

大家可以都知道啊&#xff0c;tp框架5.1之前的版本都是可以在thinkphp的官网进行下载压缩包来安装框架的&#xff0c;那么在从tp5.1开始啊&#xff0c;就取消了下载压缩包安装的方法&#xff0c;那么我们如何进行下载呢&#xff1f;tp5.1的手册中开始就有提到tp5.1框架有两种安…

[连载]《C#通讯(串口和网络)框架的设计与实现》- 13.中英文版本切换设计

目 录 第十三章 中英文版本切换设计... 2 13.1 不用自带的资源文件的理由... 2 13.2 配置文件... 2 13.3 语言管理类... 3 13.4 应用管理类... 12 13.5 小结... 12 第十三章 中英文版本切换设计 13.1 不用自带的资源文件…

【JavaScript】apply和call的区别在哪?

我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家分享.. 如有什么不对的或者说法不明确的地方希望读者多多提一些意见,以便共同提高.. 主要我是要解…

php js动态显示系统时间,PHP+JS动态显示服务器时间

摘要&#xff1a;JS默认只能获取当前系统时间&#xff0c;若想获取服务器时间&#xff0c;必须加上后端语言配合&#xff0c;PHPJS获取服务器端时间代码&#xff1a;运行结果&#xff1a;2017-4-4 15:...JS默认只能获取当前系统时间&#xff0c;若想获取服务器时间&#xff0c;…

SQL中的事物【转】

来源于&#xff1a;http://www.cnblogs.com/zhuifengnianshao/archive/2010/11/24/1886939.html事务&#xff08;Transaction&#xff09;是并发控制的单位&#xff0c;是用户定义的一个操作序列。这些操作要么都做&#xff0c;要么都不做&#xff0c;是一个不可分割的工作单位…