集合总结:
单列集合:
Collection(接口):
|--List(接口):
List集合的特点:有序,可重复
List集合的子类:
|--ArrayList:底层是数组结构,查询快,增删慢
|--ArrayList中常用的方法:
|-- boolean add(E e) :添加元素到集合的尾部(返回值为boolean类型,代表是否添加成功)
|-- E get(int index) :根据索引获取指定位置的元素
|-- set(int index, E element) :将元素添加到指定的索引位置,其他位置的元素依次后移
|--boolean contains(Object o) :判断集合中是否包含指定元素(返回值为boolean类型,代表是否包含此元素)
|--LinkedList:底层是链表结构,查询慢,增删快
|--Set(接口):
Set集合的子类:
|--HashSet:底层是哈希表结构,无序不可重复
|--HashSet中常用的方法:
|--boolean add(E e):添加元素,E代表泛型(返回值为boolean类型,代表是否添加成功)
|-- boolean remove(Object o):删除元素(返回值为boolean类型,代表是否删除成功)
|-- boolean contains(Object o) :判断是否包含指定元素(返回值为boolean类型,代表是否包含此元素)
|--Iterator<E> iterator() :获取迭代器对象(返回值是一个迭代器对象,可以用来遍历集合)
|--迭代器对象中常用的方法:
|--boolean hasNext() :如果仍有元素可以迭代,则返回 true。
|--E next():返回迭代的下一个元素。(E代表迭代器的泛型,即集合的泛型)
|--如何保证元素唯一性的呢?
由hashCode()和equals()保证的:
首先比较哈希值是否相同
相同:继续执行equals()方法
返回true:元素重复了,不添加
返回false:直接把元素添加到集合
不同:就直接把元素添加到集合
|--LinkedHashSet:链表结构+Hash表结构,链表结构保证有序,哈希表结构保证不重复,所以LinkedHashSet是有序,不可重复的
双列集合:
Map(接口):
Map集合的特点:存储的是键值对形式的元素,键唯一,值可以重复。
Map集合的子类:
|--HashMap:底层是哈希表结构,无序、不可重复
|--HashMap中常用的方法:
|--put(K key, V value) :向Map集合中添加键值对
|--get(Object key):根据指定的键获取对应的值
|--遍历HashMap集合的两种方式:
A:键找值
a:获取所有键的集合
b:遍历键的集合,得到每一个键
c:根据键到集合中去找值
B:键值对对象找键和值
a:获取所有的键值对对象的集合
b:遍历键值对对象的集合,获取每一个键值对对象
c:根据键值对对象去获取键和值
代码体现:
Map<String,String> hm = new HashMap<String,String>();
hm.put("it002","hello");
hm.put("it003","world");
hm.put("it001","java");
//方式1 键找值
Set<String> set = hm.keySet();
for(String key : set) {
String value = hm.get(key);
System.out.println(key+"---"+value);
}
//方式2 键值对对象找键和值
Set<Map.Entry<String,String>> set2 = hm.entrySet();
for(Map.Entry<String,String> me : set2) {
String key = me.getKey();
String value = me.getValue();
System.out.println(key+"---"+value);
}
Properties:(Hashtable的子类)
Properties集合的特点:唯一一个跟流有关的集合,键和值都是String类型,常用于读取配置文件
|--Properties中常用的方法:
|--特有方法:
|--Object setProperty(String key,String value):向Properties集合中添加键值对
|--String getProperty(String key):根据指定的键获取对应的值
|--Set<String> stringPropertyNames():获取到所有键的集合
|--和IO流结合的方法
|--把键值对形式的文本文件内容加载到集合中
|--public void load(Reader reader)
|--public void load(InputStream inStream)
|--把集合中的数据存储到文本文件中
|--public void store(Writer writer,String comments)
|--public void store(OutputStream out,String comments)
|
|