常用Java工具类

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

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

StringUtils  

这是象面包和奶油一样必须的通用语言库,这个实用工具类包括一些很早以前在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"     


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);  


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 }   


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>();  

你可能感兴趣的:(java,jdk,thread,xml,Google)