Java软件开发的很大一部分都使用来自各种库的API。我从10,000个开源Java项目中提取了API类的频率。这些类来自Java标准库或第三方库。每个类别对每个项目计一次。以下列表显示了前100名。
1.前100个Java类
括号中的数字是频率,范围为1-10,000。例如,“ java.util.ArrayList(6958)”表示在10,000个项目中,其中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个中,大多数来自util,lang和io。
该列表可以用于以下用途。
1.使用一个班级的频率反映了它的受欢迎程度和重要性。对于刚开始的Java开发人员,首先学习最有用的API可能是一个不错的策略。
2.全世界大多数开发人员都反映了Java开发的趋势。在前100名中,我们可以看到Android非常流行。
3.当两个类具有相同/相似的功能时,具有较高频率的类表示该类是首选。出于各种原因(例如可用性,文档,时间复杂度,能耗等),可能会首选此类。
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。