Java集合大致可以分为Set、List、Queue和Map四种体系:
Set | 无序、不可重复的集合 |
---|---|
List | 有序、重复的集合 |
Map | 具有映射关系的集合 |
Queue | 队列集合 |
注:
1)集合可以保存数量不确定的数据
2)集合可以保存具有映射关系的数据(即关联数组,键值对 key-value)
3)集合只能保存对象(实际上只是保存对象的引用变量),基本数据类型的变量要转换成对应的包装类才能放入集合类中
1、 Java的集合类主要由两个接口派生而出:Collection和Map
1)Collection集合
其中,TreeSet、HashSet、LinkedList、ArrayList是常用的已实现集合类
2)Map集合
Map实现类用于保存具有映射关系的数据。
Map保存的每项数据都是key-value对。
Map里的key是不可重复的。
其中,TreeMap、HashMap是常用的已实现集合类
2、用法示例
1)TreeSet
2)HashSet
3)LinkedList
4)ArrayList
· 实现了List接口的,底层采用数组实现。
· 实现了Cloneable接口,即覆盖了函数clone(),能被克隆。
· 实现了java.io.Serializable接口,这意味着ArrayList支持序列化,能通过序列化去传输。
在这里插入代码片
5)TreeMap
6)HashMap
//创建
HashMap<String, PersonEntity> personEntityHashMap = new HashMap<>();
//存值
personEntityHashMap.put("zlz", zlz);
personEntityHashMap.put("zyc", zyc);
//取值(根据key)
PersonEntity p1 = personEntityHashMap.get("zlz");
PersonEntity p2 = personEntityHashMap.get("zyc");
//判空
if (personEntityHashMap.isEmpty()) {
Log.i("TAG", "HashMap is empty !");
}
//判断HashMap中是否含有该key的对象
if (personEntityHashMap.containsKey("zlz")) {
Log.i("TAG", "zlz exists !");
}
//判断HashMap中是否含有该value的对象
if (personEntityHashMap.containsValue(zyc)) {
Log.i("TAG", "zyc exists !");
}
//遍历key
for (String key : personEntityHashMap.keySet()) {
Log.i("TAG", "key : " + key);
}
//遍历value
for (PersonEntity value : personEntityHashMap.values()) {
Log.i("TAG", "value : " + value);
}
//遍历map
for (Map.Entry<String, PersonEntity> entry : personEntityHashMap.entrySet()) {
Log.i("TAG", "map : " + entry.getKey() + ", " + entry.getValue());
}
//获取haspMap元素个数
int elementCnt = personEntityHashMap.size();
//hashMap的复制
HashMap<String, PersonEntity> personEntityHashMap1 = new HashMap<>();
personEntityHashMap1.putAll(personEntityHashMap);
//删除指定key的元素
personEntityHashMap1.remove("zlz");
//清空hashMap
personEntityHashMap1.clear();
//如果当前hashMap不存在该key或该key关联的value==null,则执行put();否则不执行
personEntityHashMap1.putIfAbsent("zlz", zlz);
personEntityHashMap.putIfAbsent("zlz", zlz);
HashMap的compute()
HashMap的compare()