大部分的 Java 软件开发都会使用到各类不一样的库。近日咱们从一万个开源的 Java 项目中进行分析,从中提取出最经常使用的 Java 类,这些类有来自于 Java 的标准库,也有第三方库。每一个类在同一个项目中只计数一次,下面的列表中显示前 100 名的类。php
如下列表中按使用最多的类进行排序,第三个数值表示 10000 个项目里使用到该类的项目数,而完整的列表请看 here.java
java.util.ArrayList (6958)android
java.io.IOException (6866)sql
java.util.List (6784)api
java.util.HashMap (5590)app
java.util.Map (5413)dom
java.io.File (5097)ui
java.io.InputStream (4234)spa
java.util.Set (3915).net
java.util.Arrays (3884)
java.util.Iterator (3856)
java.util.Collections (3643)
java.util.Date (3461)
java.util.HashSet (3278)
java.io.BufferedReader (3257)
java.util.Collection (3192)
java.net.URL (3168)
java.io.FileInputStream (3044)
java.io.InputStreamReader (3023)
org.junit.Test (3008)
java.io.FileOutputStream (2843)
java.io.OutputStream (2563)
java.util.regex.Pattern (2469)
java.io.Serializable (2437)
java.util.LinkedList (2372)
java.text.SimpleDateFormat (2245)
java.util.Properties (2190)
java.util.Random (2171)
java.lang.reflect.Method (2141)
java.util.regex.Matcher (2012)
android.os.Bundle (2007)
java.util.logging.Logger (1999)
org.junit.Before (1920)
java.util.Comparator (1896)
java.io.ByteArrayInputStream (1868)
java.io.PrintWriter (1862)
java.util.Calendar (1854)
android.app.Activity (1843)
android.content.Context (1780)
android.view.View (1731)
java.util.Locale (1719)
java.util.Enumeration (1709)
java.util.Map.Entry (1705)
java.io.FileWriter (1677)
java.io.FileReader (1651)
android.util.Log (1614)
android.content.Intent (1601)
java.util.logging.Level (1557)
java.lang.reflect.Field (1499)
java.io.StringWriter (1499)
android.widget.TextView (1442)
java.util.LinkedHashMap (1409)
java.io.Reader (1390)
java.net.URI (1377)
java.io.Writer (1339)
java.text.ParseException (1318)
junit.framework.TestCase (1318)
java.io.OutputStreamWriter (1295)
java.io.StringReader (1279)
java.io.BufferedWriter (1265)
java.util.Vector (1254)
java.util.StringTokenizer (1251)
java.text.DateFormat (1246)
java.io.BufferedInputStream (1235)
java.util.TreeMap (1227)
org.xml.sax.SAXException (1218)
java.io.PrintStream (1168)
java.util.TreeSet (1160)
android.widget.Toast (1157)
java.util.Hashtable (1154)
java.net.URLEncoder (1134)
org.w3c.dom.Document (1130)
android.widget.Button (1129)
org.junit.After (1128)
java.awt.Color (1099)
java.net.URISyntaxException (1085)
java.security.MessageDigest (1072)
org.slf4j.Logger (1054)
java.sql.SQLException (1043)
org.slf4j.LoggerFactory (1042)
java.util.UUID (1040)
java.net.InetAddress (1026)
junit.framework.Assert (1011)
android.view.ViewGroup (1005)
上表中,一点也不奇怪,有 85 个是 Java 的标准库,由于这是语言自己的一部分,涉及 util、lang 和 io 包。
下图是包使用的分布图:
该调查是分析源码文件中的 import 语句,所以你并无发现大量的 String, Math, StringBuilder 等类,因此不必对它们进行排除。