Skip to content

Latest commit

 

History

History
155 lines (125 loc) · 14.4 KB

Java100Classes.md

File metadata and controls

155 lines (125 loc) · 14.4 KB

最常用的Java类 Top 100

大部分Java开发都会使用各种类库/框架及其API。 作者从10000个开源Java项目中提取并统计了各个 API Class 的使用频率,包括Java标准库和第三方类库。在每个项目中一个 class 只计数1次(这种方法也有一定的道理,因为有封装和重用,出现次数多不一定就是用的多)。下面列出了排名前100的 Class

1. Top 100 Java Classes

下面括号中的数字表示出现频率, 范围从 1 到 10000; 例如, “java.util.ArrayList (6958)” 代表在这10000个项目中, 有 5958 个使用到 java.util.ArrayList; 如果感兴趣,你也可以 查看详细统计列表

  1. java.util.ArrayList(6958)
  2. java.io.IOException(6866)
  3. java.util.List(6784)
  4. java.util.HashMap(5590)
  5. java.util.Map(5413)
  6. java.io.File(5097)
  7. java.io.InputStream(4234)
  8. java.util.Set(3915)
  9. java.util.Arrays(3884)
  10. java.util.Iterator(3856)
  11. java.util.Collections(3643)
  12. java.util.Date(3461)
  13. java.util.HashSet(3278)
  14. java.io.BufferedReader(3257)
  15. java.util.Collection(3192)
  16. java.net.URL(3168)
  17. java.io.FileInputStream(3044)
  18. java.io.InputStreamReader(3023)
  19. org.junit.Test(3008)
  20. java.io.FileOutputStream(2843)
  21. java.io.FileNotFoundException(2669)
  22. java.io.OutputStream(2563)
  23. java.util.regex.Pattern(2469)
  24. java.io.Serializable(2437)
  25. java.util.LinkedList(2372)
  26. java.text.SimpleDateFormat(2245)
  27. java.util.Properties(2190)
  28. java.util.Random(2171)
  29. java.lang.reflect.Method(2141)
  30. java.io.ByteArrayOutputStream(2112)
  31. java.util.regex.Matcher(2012)
  32. android.os.Bundle(2007)
  33. java.util.logging.Logger(1999)
  34. java.io.UnsupportedEncodingException(1968)
  35. org.junit.Before(1920)
  36. java.util.Comparator(1896)
  37. java.io.ByteArrayInputStream(1868)
  38. java.io.PrintWriter(1862)
  39. java.util.Calendar(1854)
  40. android.app.Activity(1843)
  41. java.net.MalformedURLException(1828)
  42. android.content.Context(1780)
  43. android.view.View(1731)
  44. java.util.Locale(1719)
  45. java.util.Enumeration(1709)
  46. java.util.Map.Entry(1705)
  47. java.io.FileWriter(1677)
  48. java.io.FileReader(1651)
  49. android.util.Log(1614)
  50. android.content.Intent(1601)
  51. java.lang.reflect.InvocationTargetException(1594)
  52. java.util.logging.Level(1557)
  53. java.lang.reflect.Field(1499)
  54. java.io.StringWriter(1499)
  55. android.widget.TextView(1442)
  56. java.util.LinkedHashMap(1409)
  57. java.io.Reader(1390)
  58. java.net.URI(1377)
  59. java.io.Writer(1339)
  60. java.text.ParseException(1318)
  61. junit.framework.TestCase(1318)
  62. java.io.OutputStreamWriter(1295)
  63. java.io.StringReader(1279)
  64. java.io.BufferedWriter(1265)
  65. java.util.Vector(1254)
  66. java.util.StringTokenizer(1251)
  67. java.text.DateFormat(1246)
  68. java.util.concurrent.TimeUnit(1237)
  69. java.io.BufferedInputStream(1235)
  70. java.util.TreeMap(1227)
  71. org.xml.sax.SAXException(1218)
  72. javax.servlet.http.HttpServletRequest(1175)
  73. java.io.PrintStream(1168)
  74. java.util.TreeSet(1160)
  75. android.widget.Toast(1157)
  76. java.util.Hashtable(1154)
  77. java.lang.reflect.Constructor(1139)
  78. java.net.URLEncoder(1134)
  79. java.security.NoSuchAlgorithmException(1134)
  80. org.w3c.dom.Document(1130)
  81. android.widget.Button(1129)
  82. org.junit.After(1128)
  83. javax.servlet.http.HttpServletResponse(1109)
  84. java.awt.Color(1099)
  85. java.net.URISyntaxException(1085)
  86. javax.servlet.ServletException(1081)
  87. javax.xml.parsers.DocumentBuilderFactory(1076)
  88. java.lang.annotation.Retention(1075)
  89. java.security.MessageDigest(1072)
  90. java.util.concurrent.Executors(1062)
  91. java.net.UnknownHostException(1057)
  92. org.slf4j.Logger(1054)
  93. java.sql.SQLException(1043)
  94. org.slf4j.LoggerFactory(1042)
  95. java.util.UUID(1040)
  96. java.net.InetAddress(1026)
  97. junit.framework.Assert(1011)
  98. android.view.ViewGroup(1005)
  99. java.util.concurrent.ConcurrentHashMap(1001)
  100. java.awt.event.ActionEvent(995)

2. 潜在的使用频率列表

其中的85个来自于Java标准类库,这并不奇怪,因为标准库是语言的一个组成部分。在这85个标准类中, 大部分位于 java.util, java.langjava.io 包中.

关于上面的列表,使用说明如下:

  1. 一个类的使用频率反映其流行程度和重要性。 对Java初学者来说, 多花心思学习最有用的这些 API 可能是个很主意。
  2. 全世界大多数程序员的选择反映了Java开发的趋势。 在这100个类中,我们可以看到, Android 是非常受欢迎的。
  3. 如果两个类具有 同样/相似 的功能, 则频率越高意味着这个类被优先考虑。 一个类被优先考虑的原因可能各不相同,比如可用性(usability), API文档(documentation), 时间复杂度(complexity)、 电量消耗(energy consumption)等。

3. 整个列表的分布

如下面的图表所示, 整个列表具有非常明显的长尾效应。 我们一般只对顶部区域感兴趣。

列表分布图

这项调查只统计明确引入的那些类, 而形如 java.lang.* 这种通配符的形式的 import 被忽略了, 所以像 String, Math, StringBuilder 这些类都没进入统计, 因为在默认语言包内,没有必要显式引入它们。 如果你感兴趣,也可以做做大数据分析,记得将你的结果分享给大家哦!

更多阅读...

  1. 4 types of Java inner classes
  2. Learn Eclipse RCP framework by using open source projects
  3. Collection Classes Summary Table
  4. How to make a method thread-safe in Java?

原文链接: Top 100 Classes Used in Java Projects

原文日期: 2014-09-28

翻译日期: 2014-10-17

翻译人员: 铁锚