Collection是一个接口,其下有两个常用的集合体系,一个是List,另一个是Set。
List系列集合:添加的元素是有序、可重复、有索引。
实现类:
ArrayList、LinekdList :有序、可重复、有索引。
Set系列集合:添加的元素是无序、不重复、无索引。
实现类:
HashSet: 无序、不重复、无索引;
LinkedHashSet: 有序、不重复、无索引。
TreeSet:按照大小默认升序排序、不重复、无索引。
集合初始化
Collection vehicles = new ArrayList<>();
//Set vehicles = new HashSet<>(); //Set集合遍历类似,改为HashSet即可
//List vehicles = new ArrayList<>();Collections.addAll(vehicles, "飞机", "坦克", "马车", "火车", "电车", "轻轨", "磁悬浮列车");
//1、第一种遍历方式:使用迭代器System.out.println("使用Iterator迭代器进行遍历:");Iterator it = vehicles.iterator();while (it.hasNext()) {System.out.print(it.next() + " ");}System.out.println("\n" + "---------------------------------");
//2、第二种遍历方式:增强for循环进行遍历System.out.println("使用增强for循环进行遍历:");for (String vehicle : vehicles) {System.out.print(vehicle + " ");}System.out.println("\n" + "---------------------------------");System.out.println("使用匿名内部类进行遍历:");vehicles.forEach(new Consumer() {@Overridepublic void accept(String s) {System.out.print(s + " ");}});System.out.println("\n" + "---------------------------------");
//3、第三种遍历方式:Lambda表达式进行遍历System.out.println("使用Lambda表达式进行遍历:");vehicles.forEach((s) -> System.out.print(s + " "));System.out.println("\n" + "---------------------------------");
遍历结果:
使用Iterator迭代器进行遍历:
飞机 坦克 马车 火车 电车 轻轨 磁悬浮列车
---------------------------------
使用增强for循环进行遍历:
飞机 坦克 马车 火车 电车 轻轨 磁悬浮列车
---------------------------------
使用匿名内部类进行遍历:
飞机 坦克 马车 火车 电车 轻轨 磁悬浮列车
---------------------------------
使用Lambda表达式进行遍历:
飞机 坦克 马车 火车 电车 轻轨 磁悬浮列车
---------------------------------
Map是一个接口,其下有两个常用的集合体系,一个是HashMap,另一个是HashTable,其中,使用最多的是HashMap。
HashMap:元素按照键是无序,不重复,无索引,值不做要求,基于哈希表(与Map体系一致)
LinkedHashMap:元素按照键是有序,不重复,无索引,值不做要求,基于哈希表
TreeMap:元素只能按照键排序,不重复,无索引的,值不做要求,可以做排序
集合初始化:
Map phones = new HashMap<>();phones.put("MI_10_ULTRA",5999);phones.put("MI_10_PRO",4999);phones.put("MI_10_S",3999);// Map集合后面重复的键对应的元素会覆盖前面重复的整个元素!phones.put("MI_10",3999);phones.put("MI_10_LITE",2999);
//第一种遍历方式:键找值,拿到集合的全部键//1、键找值 : 拿到集合的全部键Set keys=phones.keySet();System.out.println("使用键找值方式进行遍历:");//2、遍历每个键,根据键提取值for (String key : keys) {int money=phones.get(key);System.out.println("型号:"+key+" 价格:"+money+"元");}System.out.println("\n" + "---------------------------------");
//第二种遍历方式:键值对,调用Map的方法 entrySet把Map集合转换成Set集合形式 maps.entrySet();// 1、把Map集合转换成Set集合 Entry可以理解为同时封装了map中的kv键值对的类System.out.println("使用键值对方式进行遍历:");Set> entries = phones.entrySet();//2、开始遍历for (Map.Entry entry : entries) {String phoneName=entry.getKey();int price=entry.getValue();System.out.println("型号:"+phoneName+" 价格:"+price+"元");}System.out.println("\n" + "---------------------------------");
//第三种遍历方式:Lambda表达式,JDK 1.8开始之后的新技术。System.out.println("使用Lambda表达式进行遍历:");phones.forEach((k, v) ->{System.out.println("型号:"+k+" 价格:"+v+"元");});
遍历结果:
使用键找值方式进行遍历:
型号:MI_10_S 价格:3999元
型号:MI_10_PRO 价格:4999元
型号:MI_10_LITE 价格:2999元
型号:MI_10_ULTRA 价格:5999元
型号:MI_10 价格:3999元---------------------------------
使用键值对方式进行遍历:
型号:MI_10_S 价格:3999元
型号:MI_10_PRO 价格:4999元
型号:MI_10_LITE 价格:2999元
型号:MI_10_ULTRA 价格:5999元
型号:MI_10 价格:3999元---------------------------------
使用Lambda表达式进行遍历:
型号:MI_10_S 价格:3999元
型号:MI_10_PRO 价格:4999元
型号:MI_10_LITE 价格:2999元
型号:MI_10_ULTRA 价格:5999元
型号:MI_10 价格:3999元