一、集合类与数组的区别
1.集合的长度可变,数组的长度固定;
2.集合用来存放对象引用,数组用来存放基本类型的数据;
二、集合类的关系
1.Collection接口
存储一组不唯一、无序的对象。
2.List接口
存储一组不唯一、有序(插入顺序)的对象。
2.1实现类:ArrayList类、LinkedList类
ArrayList类:实现长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率较高。
add() addAll() clear() size() iterator() get() set()
LinkedList类:采用链表存储方式,插入、删除元素时效率较高。
add() addAll() addFirst() addLast() clear() remove() size() iterator() get() set()
3.Set接口
存储一组唯一、无序的对象。
唯一性:在添加对象时,会先采用对象的equals()方法与当前已有的对象的HashCode进行比较(重写了equals()方法的除外),如果没有相同的对象,则添加新的对象。
无序性:没有get()方法,无法通过下标遍历Set集合。
遍历set集合方法:
1.通过迭代器Iterator
public static void main(String[] args){ Setset = new HashSet (); set.add("c"); set.add("a"); set.add("c"); set.add("b"); Iterator it = set.iterator(); while (it.hasNext()) { String str = (String) it.next(); System.out.print(str + " "); }}
输出结果:a b c
2.增强型for循环
public static void main(String[] args) { Setset = new HashSet (); set.add("c"); set.add("a"); set.add("c"); set.add("b"); for (Object obj : set) { String str = (String) obj; System.out.println(str); }}
输出结果:a b c
4.Map接口
存储一组键值对象,提供key到value的映射。
输出所有的key值:keySet()方法,返回键的Set视图;
输出所有的values值:values()方法,返回值的Collection视图;
获得所有的键值对:entrySet()方法,返回键值对的Set视图。
public static void main(String[] args) { Mapmap = new HashMap<>(); map.put("java", "课堂学习"); map.put("Html", "视频学习"); // 获得所有键值对的集合 Set > entrySet = map.entrySet(); // 集合中对象的类型为Map.Entry // 方法一:通过增强型for循环 for(Object obj:entrySet) { String key = ((Map.Entry) obj).getKey().toString(); String value = ((Map.Entry) obj).getValue().toString(); System.out.println(key + "---" + value); } // 方法二:通过迭代器Iterator Iterator > it1; it1 = entrySet.iterator(); while(it1.hasNext()){ Map.Entry me = it1.next(); String key1 = me.getKey(); String value1 = me.getValues(); System.out.println(key1 + "---" + value); } Iterator it; System.out.println("key值:"); // 获得所有键的集合 Set set = map.keySet(); // 集合中对象的类型为String it = set.iterator(); while (it.hasNext()) { System.out.print(it.next() + "\t"); } System.out.println("\nvalues值:"); // 获得所有值的集合 Collection coll = map.values(); // 集合中对象的类型为String it = coll.iterator(); while (it.hasNext()) { System.out.print(it.next() + "\t"); } System.out.println("键值对:"); // 获得所有键值对的集合 Set set1 = map.entrySet(); System.out.println(set1);}
public static void main(String[] args) { Mapmap = new HashMap<>(); map.put("java", "课堂学习"); map.put("Html", "视频学习"); Iterator it; System.out.println("key值:"); // 获得所有键的集合 Set set = map.keySet(); it = set.iterator(); while (it.hasNext()) { System.out.print(it.next() + "\t"); } System.out.println("\nvalues值:"); // 获得所有值的集合 Collection coll = map.values(); it = coll.iterator(); while (it.hasNext()) { System.out.print(it.next() + "\t"); } System.out.println("键值对:"); // 获得所有键值对的集合 Set set1 = map.entrySet(); System.out.println(set1); }