• 我的顶级Java工具名单


    Ignacio Coloma说道:作为一个软件开发者,缺乏想象力是最严重的罪过之一。我们经常把事情重复做一遍又一遍,但是我们很少改变这种方式,至少我是这样。经过这些年开发,在我的工具箱里面有了一些每个项目我都需要用到的工具,烦人的重复工作不再是我的事。

    下面这些工具也许你已经用到,让我来仔细介绍它们:

    StringUitls

    这是象面包和奶油一样必须的通用语言库,这个实用工具类包括一些很早以前在String中未包含的重要方法。

    Java代码 复制代码
    1. StringUtils.isEmpty(null) && StringUtils.isEmpty(""); // true    
    2. StringUtils.isBlank("    \n\t");                       // true    
    3. StringUtils.substringAfterLast("foo.bar.baz", ".");   // "baz"    
    4. StringUtils.substringBeforeLast("foo.bar.baz", ".");  // "foo.bar"    
    5. StringUtils.split("foo.bar.baz", '.');                // { "foo", "bar", "baz" }    
    6. StringUtils.split("foo,   bar,baz", ", ");             // { "foo", "bar", "baz" }    
    7. StringUtils.leftPad("1", 3, '0');                     // "001"    
    StringUtils.isEmpty(null) && StringUtils.isEmpty(""); // true StringUtils.isBlank(" \n\t"); // true StringUtils.substringAfterLast("foo.bar.baz", "."); // "baz" StringUtils.substringBeforeLast("foo.bar.baz", "."); // "foo.bar" StringUtils.split("foo.bar.baz", '.'); // { "foo", "bar", "baz" } StringUtils.split("foo, bar,baz", ", "); // { "foo", "bar", "baz" } StringUtils.leftPad("1", 3, '0'); // "001"

    IOUtils and FileUtils

    在一种当你需要手动操作多个文件罕见情况下必须具备的工具,这两个工具很相似(FileUtils操作文件,IOUtils操作InputStream和Reader classes),和捆绑常用IO.

    Java代码 复制代码
    1. File file1;  
    2. File file2;  
    3. InputStream inputStream;  
    4. OutputStream outputStream;  
    5.   
    6. // copy one file into another  
    7. FileUtils.copyFile(file1, file2);  
    8. IOUtils.copy(inputStream, outputStream);  
    9.   
    10. // read a file into a String  
    11. String s1 = FileUtils.readFileToString(file1);  
    12. String s2 = IOUtils.toString(inputStream);  
    13.   
    14. // read a file into a list of Strings, one item per line  
    15. List<String> l1 = FileUtils.readLines(file1);  
    16. List<String> l2 = IOUtils.readLines(inputStream);  
    17.   
    18. // put this in your finally() clause after manipulating streams  
    19. IOUtils.closeQuietly(inputStream);  
    20.   
    21. // return the list of xml and text files in the specified folder and any subfolders  
    22. Collection<File> c1 = FileUtils.listFiles(file1, { "xml", "txt" }, true);  
    23.   
    24. // copy one folder and its contents into another  
    25. FileUtils.copyDirectoryToDirectory(file1, file2);  
    26.   
    27. // delete one folder and its contents  
    28. FileUtils.deleteDirectory(file1);  
    File file1; File file2; InputStream inputStream; OutputStream outputStream; // copy one file into another FileUtils.copyFile(file1, file2); IOUtils.copy(inputStream, outputStream); // read a file into a String String s1 = FileUtils.readFileToString(file1); String s2 = IOUtils.toString(inputStream); // read a file into a list of Strings, one item per line List<String> l1 = FileUtils.readLines(file1); List<String> l2 = IOUtils.readLines(inputStream); // put this in your finally() clause after manipulating streams IOUtils.closeQuietly(inputStream); // return the list of xml and text files in the specified folder and any subfolders Collection<File> c1 = FileUtils.listFiles(file1, { "xml", "txt" }, true); // copy one folder and its contents into another FileUtils.copyDirectoryToDirectory(file1, file2); // delete one folder and its contents FileUtils.deleteDirectory(file1);

    Google collections

    这是我所知道的最好的扩展实现包,其中一些被社区叫嚣着要加入JDK:

    Java代码 复制代码
    1. // create an ArrayList with three arguments  
    2. List<String> list = Lists.newArrayList("foo", "bar", "baz");  
    3.   
    4. // notice that there is no generics or class cast,  
    5. // and still this line does not generate a warning.  
    6. Set<String> s = Sets.newConcurrentHashSet();  
    7.   
    8. // intersect and union are basic features of a Set, if you ask me  
    9. Set<String> s = Sets.intersect(s1, s2);  
    10.   
    11. // Example   of multiple values in a Map  
    12. ListMultimap<String, Validator> validators = new ArrayListMultimap<String, Validator>();  
    13. validators.put("save", new RequiredValidator());  
    14. validators.put("save", new StringValidator());  
    15. validators.put("delete", new NumberValidator());  
    16.   
    17. validators.get("save"); // { RequiredValidator, StringValidator }  
    18. validators.get("foo");  // empty List (not null)  
    19. validators.values();    // { RequiredValidator, StringValidator, NumberValidator }  
    // create an ArrayList with three arguments List<String> list = Lists.newArrayList("foo", "bar", "baz"); // notice that there is no generics or class cast, // and still this line does not generate a warning. Set<String> s = Sets.newConcurrentHashSet(); // intersect and union are basic features of a Set, if you ask me Set<String> s = Sets.intersect(s1, s2); // Example of multiple values in a Map ListMultimap<String, Validator> validators = new ArrayListMultimap<String, Validator>(); validators.put("save", new RequiredValidator()); validators.put("save", new StringValidator()); validators.put("delete", new NumberValidator()); validators.get("save"); // { RequiredValidator, StringValidator } validators.get("foo"); // empty List (not null) validators.values(); // { RequiredValidator, StringValidator, NumberValidator }

    java.util.concurrent

    不是每个人都需要这么重的java.util.concurrent,但是很好用:

    Java代码 复制代码
    1. // a map that may be modified (by the same or different thread) while being iterated  
    2. Map<String, Something> repository = new ConcurrentHashMap<String, Something>();  
    3.   
    4. // same with lists. This one is only available with Java 6  
    5. List<Something> list = new CopyOnWriteArrayList<Something>();  
    // a map that may be modified (by the same or different thread) while being iterated Map<String, Something> repository = new ConcurrentHashMap<String, Something>(); // same with lists. This one is only available with Java 6 List<Something> list = new CopyOnWriteArrayList<Something>();

    你有好的工具推荐吗?欢迎留言。
    来自:java.dzone.com
  • 相关阅读:
    java 学习之环境配置
    报表设计--分组报表-普通分组-纵向扩展
    报表设计--网格式报表
    报表设计--简单报表
    SDP平台操作视频
    页面设计--Tree目录树
    页面设计--Grid列表
    页面设计--RadioButton
    页面设计--CheckBoxList
    页面设计--TextBox
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400892.html
Copyright © 2020-2023  润新知