Java —— 初识集合
每博一文案
我们一生可能会遇到一个人,一路相遇,相知相爱,却注定不能相守,
可即使没有结果,也足够我们从中汲取力量,奔赴下一场山海了。
正如村上春树的这句话,我告诉你,我喜欢你,并不是一定要和你在一起,
只是希望今后的你,在遭遇人生低谷的时候,不要灰心,至少曾经有人被
你的魅力所吸引,曾经是,以后也会是,我们会遇见很多人,也会付出
很多真心,然后再错过很多事情。最终才能慢慢长大。
我们什么都没忘,但是有些事只适合收藏,所以不要因为失去而纠结,因为
离散而惆怅,不是所有的故事都一定要走向圆满。
我的世界,你来过就好。
—————— 一禅心灵庙语
集合
集合及其背后的数据结构
在Java当中,Java把很多的数据结构全部封装起来了
在使用到的时候,需要知道其底层原理
集合的体系结构
- 使用成熟的集合框架,有助于我们便捷,快速的写出高效,稳定的代码
- 学习背后的数据结构知识,有助于我们理解各个集合的优缺点以及使用场景
- Collection 用来存储管理一组对象,这些对象一般被成为元素 elements
- Set :元素不能重复,背后隐含着查找/搜素的语义,SortedSet 一组有序的不能重复的元素
- Map : 键值对:key-value-pair 背后隐含着查找/搜素的语义,SoredMap 一组有序的键值对
- 当类实现了或者继承了 Iterable接口就可以利用foreach
Collection 接口
Collectionn 接口是单列集合的最上层接口,该接口提供了很多常用的抽象方法,如下表:
方法名 | 返回类型 | 方法描述 |
---|---|---|
add(E e) | boolean | 向集合中添加指定元素 |
clear( ) | void | 删除集合中的所有元素 |
isEmpty( ) | boolean | 判断集合是否为空 |
remove(Object o ) | boolean | 删除集合中的指定元素 |
size( ) | int | 返回集合中实际元素数量 |
toArray( ) | object[ ] | 返回一个装有所有集合中元素的数组 |
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class Blog13 {
/**
* Collection 中的 ArrayList上的使用
*/
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>(); // 实例化创建一个有关于 ArrayList类的方法,父接口引用子类
collection.add("你好"); // 向集合中添加指定元素
collection.add("世界");
System.out.println(collection); // 打印顺序表
collection.clear(); // 删除所有元素
System.out.println(collection); // 打印顺序表
collection.add("hello");
collection.add("world");
System.out.println(collection.isEmpty()); // 判断该顺序表是否为空
collection.remove("hello"); // 删除指定元素
System.out.println(collection);
System.out.println(collection.size()); // 计算该顺序表中的元素个数
collection.add("你好世界");
Object[] objects = collection.toArray();
System.out.println(Arrays.toString(objects));
for (String s: collection) { // 当类实现或者继承了Iterable 接口就可以使用 foreach
System.out.println(s);
}
}
}
Map接口
与Collection 接口下的集合不同,Map 接口属于双列集合,Map 接口下的集合存放的都是 ”键值对“ 。”键值对“是放入集合中的元素是一组映射信息,例如,学生名字和学生学号是一组对应的映射信息:张三—> 20001,李四—> 20003 。在这个键值对中,学生名字学号互相匹配,其中学生名字称为键(key), 学生学号称为值(key) ,组合到一起称之为键值对,可以通过键得到映射的值,其中键和值都可以是任意的引用数据类型。
Map 接口中常用方法如下:
方法名 | 返回类型 | 方法描述 |
---|---|---|
get(Object key) | V | 根据指定的键(K)得到对应的值(V) |
gerOrDefault(Object k, V defaultvalue) | V | 根据指定的键(K)查找对应的值(V) 没有找到用默认值代替 |
put(K key ,V value) | V | 放入指定的键,指定的值 |
containsKey(Object key) | boolean | 判断是否包含某个键(K) |
containsValue(Object value) | boolean | 判断是否包含某个值(V) |
set<Map.Entry<K,V>> entryset( ) | Set<Map.Entry<K,V>> | 将所有键值对返回 |
isEmpty( ) | boolean | 判断是否为空 |
size( ) | int | 返回键值对的数量 |
import java.util.*;
public class Blog13 {
/**
* Map 中的 HashMap类
*/
public static void main(String[] args) {
Map<String, String>map=new HashMap<>(); // 实例化对象,父接口引用子类 HashMap
map.put("国名女神","蒙娜丽莎"); // 添加键值对
map.put("国名老公","王思余");
map.put("及时雨","宋江");
System.out.println(map); // 打印键值对
String s = map.get("及时雨"); // 通过键得到值
System.out.println(s);
String s2 = map.getOrDefault("战神","吕布"); // 根据指定的键(K战神)查找对应的值(V吕布) 没有找到用默认值代替
System.out.println(s2);
System.out.println(map.containsKey("及时雨")); // 判断是否包含某个键(K及时雨)
System.out.println(map.containsValue("宋江")); // 判断是否包含某个值(K宋江)
map.put("及时雨","你好"); // 出现重复的再次赋值,旧的键值对会被覆盖掉
System.out.println(map);
System.out.println(map.size()); //判断键值对的数量
System.out.println(map.isEmpty()); // 判断是否为空键值对
Set<Map.Entry<String,String> >Set = map.entrySet();
for (Map.Entry<String,String> entry:Set) {
System.out.println(entry.getKey()+"==>"+entry.getValue());
}
}
实现的class
Interface | 顺序表 | 链表 | 堆 | 红黑树 | 哈希表 |
---|---|---|---|---|---|
Set | TreeSet | HashSet | |||
List | ArrayList | LinkedList | |||
Queue | LinkedList | PriorityQueue | |||
Deque | LinkedList | ||||
Map | TreeMap | HashMap |
最后:
限于自身水平,其中存在的错误,希望大家给予指教,韩星点兵——多多益善,谢谢大家,后会有期,江湖再见!