凉山州城乡规划建设局网站,网站后台编辑器,wordpress really static,电商网站开发北京1. 集合的定义什么是集合呢#xff1f;定义#xff1a;集合是一个存放对象的引用的容器。在Java中#xff0c;集合位于java.util包下。2. 集合和数组的区别(面试常问)提到容器#xff0c;就会想起数组#xff0c;那么集合和数组的区别是什么呢#xff1f;(这里是重点定义集合是一个存放对象的引用的容器。在Java中集合位于java.util包下。2. 集合和数组的区别(面试常问)提到容器就会想起数组那么集合和数组的区别是什么呢(这里是重点面试可能问的比较多)数组和集合都是Java中的容器数组的长度是固定的集合的长度是可变的数组只能存储相同数据类型的数据这里的数据类型可以是基本数据类型也可以是引用类型集合可以存储不同数据类型的对象的引用(但一般情况下我们会使用泛型来约定只使用1种数据类型)但不能存储基本数据类型空口无凭我们来点代码配合理解首先我们看下如下的数组代码String[] platformArray new String[3];platformArray[0] \博客园\;platformArray[1] \掘金\;platformArray[2] \微信公众号\;platformArray[3] \个人博客\;运行代码就会发现platformArray[3] \个人博客\;会引发java.lang.ArrayIndexOutOfBoundsException异常。而使用集合时就不存在这个问题因为集合在声明时不需要指定长度并且长度会根据放入元素的多少而变化List platformList new ArrayList();platformList.add(\博客园\);platformList.add(\掘金\);platformList.add(\微信公众号\);platformList.add(\个人博客\);观察上面声明数组的代码我们可以推断出下面的代码肯定是编译不通过的String[] platformArray new String[3];platformArray[0] \博客园\;platformArray[1] \掘金\;platformArray[2] 1;因为数组声明时用的是String类型而platformArray[2] 1;赋值时却使用了int类型。再来看下下面的集合代码List intList new ArrayList();intList.add(1);intList.add(2);intList.add(3);这段代码也是编译不通过的在IDEA中鼠标悬停时会提示如下的错误信息意思是类型参数不能是原始类型(基本数据类型)那怎么使用呢总不能不让我使用int型的集合吧当然不会Java为每种基本数据类型都提供了对应的包装类这里修改为int类型对应的包装类Integer即可List intList new ArrayList();intList.add(1);intList.add(2);intList.add(3);以下为Java的原始类型(基本数据类型)与其对应的包装类原始类型(基本数据类型)包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean3. 集合的分类在Java中集合主要分为以下3种List集合Set集合Map集合它们之间的继承关系可以参考下图。从上图可以总结出如下几点Java集合的根接口是Collection它又继承了迭代接口IterableList接口和Set接口继承了Collection接口Map接口是独立的接口并没有继承Collection接口 (这里是重点面试可能问的比较多)List接口常用的实现类有ArrayList、LinkedList、VectorSet接口常用的实现类有HashSet、LinkedHashSet、TreeSetMap接口常用的实现类有HashMap、HashTable、TreeMap4. List集合List集合包括List接口以及List接口的所有实现类。List集合具有以下特点集合中的元素允许重复集合中的元素是有顺序的各元素插入的顺序就是各元素的顺序集合中的元素可以通过索引来访问或者设置List接口常用的实现类有ArrayList、LinkedList、Vector。我们先看下如下示例了解下List集合的用法package collection;import java.util.*;public class Muster {public static void main(String[] args) {List strList new ArrayList();strList.add(\a\);strList.add(\b\);strList.add(\c\);int i (int) (Math.random() * strList.size());System.out.println(\随机获取数组中的元素\ strList.get(i));strList.remove(2);System.out.println(\将索引为2的元素从列表移除后数组中的元素是:\);for (int j 0; j strList.size(); j) {System.out.println(strList.get(j));}}}以上代码的输出结果为随机获取数组中的元素a将索引为2的元素从列表移除后数组中的元素是:ab关于List集合的详细用法ArrayList、LinkedList、Vector的区别(这里是重点面试可能问的比较多)后续会单独写文总结敬请期待。5. Set集合Set集合包括Set接口以及Set接口的所有实现类。Set集合具有以下特点集合中不包含重复元素(你可以重复添加但只会保留第1个)集合中的元素不一定保证有序Set接口常用的实现类有HashSet、LinkedHashSet、TreeSet。我们先看下如下示例了解下Set集合的用法package collection;import java.util.*;public class Muster {public static void main(String[] args) {Set platformList new HashSet();platformList.add(\博客园\);platformList.add(\掘金\);platformList.add(\微信公众号\);platformList.add(\个人博客\);// 尝试添加重复元素platformList.add(\博客园\);platformList.add(\掘金\);for (String platform : platformList) {System.out.println(platform);}}}以上代码的输出结果为博客园个人博客掘金微信公众号可以看出虽然我们尝试添加了重复元素但并没有添加成功并且输出的元素没有顺序。因此当你的集合中不允许有重复元素并且对排序也没有要求的话可以使用Set集合。关于Set集合的详细用法HashSet、LinkedHashSet、TreeSet的区别(这里是重点面试可能问的比较多)后续会单独写文总结敬请期待。6. Map集合Map集合包括Map接口以及Map接口的所有实现类。Map集合具有以下特点Map接口并没有继承Collection接口提供的是key到value的映射Map中不能包含相同的keyMap接口常用的实现类有HashMap、HashTable、TreeMap。我们先看下如下示例了解下Map集合的用法package collection;import java.util.*;public class Muster {public static void main(String[] args) {Map platformMap new HashMap();platformMap.put(1, \博客园\);platformMap.put(2, \掘金\);platformMap.put(3, \微信公众号\);platformMap.put(4, \个人博客\);// 尝试添加重复MapplatformMap.put(4, \个人博客\);// 获取所有的keySet keys platformMap.keySet();for (Integer integer : keys) {System.out.println(\Key:\ integer \,Value:\ platformMap.get(integer));}}}以上代码的输出结果为Key:1,Value:博客园Key:2,Value:掘金Key:3,Value:微信公众号Key:4,Value:个人博客从日志可以看出当我们尝试重加重复Map时并没有添加成功。关于Map集合的详细用法HashMap、HashTable、TreeMap的区别(这里是重点面试可能问的比较多)后续会单独写文总结敬请期待。7. 源码及参考8. 最后打个小广告欢迎扫码关注微信公众号「申城异乡人」定期分享Java技术干货让我们一起进步。