集合的体系结构:
1.List集合:
1.1 特点:
(1) 它是单列集合体系之一;
(2) List集合和它的实现类全部有索引;
(3) 可以存储重复元素;
(4) List集合和它的实现类的元素存取有序。
1.2 特有方法:
void add(int index,E e)——向集合中指定索引位置添加元素
E remove(int index)——删除指定索引处的元素并返回
E set(int index,E e)——修改指定索引处的元素,返回被修改的元素
E get(int index)——获取指定索引处的元素
1.3 遍历:
(1) 用迭代器进行遍历;
(2) 用普通for循环进行遍历;
(3) 用加强for进行遍历。
代码如下:
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListDemo {
public static void main(String[] args) {
List<Integer> l = new ArrayList<Integer>();
l.add(1);
l.add(6);
l.add(8);
l.add(9);
l.add(15);
// 迭代器遍历
ListIterator<Integer> it = l.listIterator();
while (it.hasNext()) {
Integer i = it.next();
System.out.println(i);
}
System.out.println("--------");
// 普通for循环遍历
for (int i = 0; i < l.size(); i++) {
Integer i1 = l.get(i);
System.out.println(i1);
}
System.out.println("--------");
// 增强for遍历
for (Integer i2 : l) {
System.out.println(i2);
}
}
}
运行结果如下:
2.Set集合:
2.1 特点:
(1) 元素存储无序;
(2) 不可以重复存储元素;
(3) 没有索引。
2.2 HashSet:
特点:
(1) HashSet不能保证数据有序
(2) HashSet数据是不能重复的
(3) HashSet是可以存储null值
(4) 底层是哈希表
(5) 没有索引
电脑中:
内存:高速存储、访问快,数据不能持久 磁盘:存储() 能持久化
2.3 LinkedHashSet:
特点:
(1) 是HashSet集合的子类;
(2) 不能存储重复元素;
(3) 能保证存储元素有序。
2.4 TreeSet:
特点:
(1) 不能存储重复元素;
(2) 存储元素有序;
(3) 没有索引。
排序:
(1) 自然排序Comparable;
(2) 比较器排序Comparabor。
3.Map:
3.1 特点:
(1) 键值对映射关系;
(2) 一个键对应一个值;
(3) 键不能重复;
(4) 元素存储无序。
3.2 常用方法:
V put(K k,V v)——向集合中添加一对元素
V remove(K k)——根据键删除键值对元素
void clear()——清空集合
boolean containsKey(K k)——判断集合中是否包含指定的键
boolean containsValue(V v)——判断集合中是否包含指定的值
boolean isEmpty()——判断集合是否为空
int size()——获取集合的长度
3.3 常用的获取方法 :
V get(K k)——根据键获取值
Set<K>keyset()——获取所有的键,保存到Set集合中
Collection<V>values——获取所有的键,保存到Collection集合中
Set<Map.Entry<K,V>>entrySet()——获取所有键值对,封装成Entry对象
3.4 遍历:
第一种:
(1) 通过keySet()方法获取所有键的集合
(2) 遍历键的集合,拿到每一个键
(3) 通过get()方法,通过键获取值
第二种:
(1) 获取所有键值对对象的集合,使用entrySet()实现
(2) 遍历键值对对象集合,拿到每一个键值对对象
(3) 调用键值对对象中的getKey()和getValue()方法获取键和值
代码如下:
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo {
public static void main(String[] args) {
Map<Integer,Integer> m = new HashMap<Integer,Integer>();
m.put(1,1);
m.put(2,2);
m.put(5,5);
// 第一种
Set<Integer> keySet = m.keySet();
for (Integer key : keySet) {
Integer value = m.get(key);
System.out.println(key+","+value);
}
System.out.println("--------");
// 第二种
Set<Map.Entry<Integer, Integer>> entrySet = m.entrySet();
for (Map.Entry<Integer, Integer> map : entrySet) {
Integer key = map.getKey();
Integer value = map.getValue();
System.out.println(key+","+value);
}
}
}
运行结果如下: