学习 Java 集合 内容!
Java 中的集合就是容器,用于存储数据,所以又称为容器类。例比,杯子是容器,用于装水。
数组可以用来存储数据,为什么还需要集合存储数据?
1、集合能装载不同数据类型的数据,数组只能装载同一种数据类型的数据。
2、数组长度规定后,存储的数据量是有限的。
3、数组不能存储含有映射关系(key-val)的数据。
public class Main {
public static void main(String[] args) {
// 创建一个集合
ArrayList List = new ArrayList();
List.add(1);
List.add("hello");
}
总结:Java 集合主要就是负责存储数据,或者是容纳其它数据,所以 Java 集合也叫做 Java 容器。
集合是一个通统,具体的分为以下几个,各自装载的数据不同,有各自特性,各自功能不同。都是接口,学习实现类。
List 是一个接口,ArrayList 是一个具体的类去实现 List 接口。
LIst 是一个有序的集合(每个元素都有自己的一个索引,第一个元素的索引为 0) 可以有重复数据,通过索引访问元素。因为有序每一个元素都有唯一的索引,即使有重复数据也可以通过索引找到。
ArrayList list = new ArrayList ();
list.add(1);
list.add(2);
list.get(0); // get:通过索引获取数据
Set 是一个无序的集合,不允许数据重复,通过数据本身访问数据。因为无序,如果有重复数据就无法具体定位到重复数据。
HashSet set = new HashSet();
set.add(1);
Map 主要存储含有映射关系(k-val)的数据
HashMap map = new HashMap<String, String>();
map.put("2021", "张三");
map.get("2021"); // 通过 key 获取 val
Collections 是一个接口,是 List 和 Set 的父接口。
HashSet<Interger> set = new HashSet(); // 只能存储整形数据
set.add(1);
set.add(2);
set.add(3);
for (Interger x : set)
System.out.println(x);
ArrayList list = new ArrayList ();
list.add(1);
list.add(2);
ArrayList list = new ArrayList ();
list.add(1);
list.add(2);
list.forEach((String name) -> System.out.println(name));
Map<String, String> map = new HashMap<>();
map.put("202101", "张三");
map.put("202102", "李四");
map.put("202103", "王二");
map.get("202202"); // get 方法是根据 key 获取 val,输出 李四
// 方式1
for (Map.Entry<String, String> entry : map.entrySet()) // 一个 entry 代表一个键值对,entrySet 代表所有的键值对
{
String key = entry.getKey();
String Val= entry.getValue();
}
// 方式2
for (String key : map.keySet()) { // keySet():所有键值对的 key,key:每一个键值对的 key
System.out.println(key);
}
for (String value : map.getvalues());// getvalues():所有键值对的 val,value:每一个键值对的 val
{
System.out.println(value);
}
// 方式3:效率低
for (String key : map.keySet()) { // keySet():所有键值对的 key,key:每一个键值对的 key
String value = map.get(key);
}