零基础学习Java之集合概述
-
- 概述
- 集合的分类
-
- Collection
-
- 基本介绍
- 常用方法
- 代码示例
- Map
-
- 基本介绍
- 常用方法
- 代码示例
概述
数组想必是很多java学习者都知道的容器。诚然,数组有很多的优点,比如:数组可以实现元素的快速访问;但是数组也有很多的缺点,比如:数组的长度是固定的、数组只能存放同一种类型的对象。因此它在实际的开发中用到的也不是很多,因为容器里的元素及其个数,我们大部分情况下是不能确定的,因此集合由此产生了。(实际开发中用的很多,所以说是不懂集合不要说找工作的事哈)
集合与数组一样也是相当于一个容器,可以用来存放很多类型的数据(不能存放基本数据类型数据)。那集合有哪些类型呢?
集合的分类
集合按照其存储结构可以分类为:Collection接口实现的集合和Map接口实现的集合。其中Collection表示的是一组对象,Map表示一组映射关系或者键值对。
Collection
基本介绍
Collection集合里存储的是一系列符合某种规则的元素,其又按照存储元素的特征进行了分类,即其子接口,下面是常见的子接口:
-
List接口:必须保持元素特定的顺序
-
Set接口:不能有重复元素
-
Queue接口:保持一个队列(先进先出)的顺序
常用方法
Collection接口中对很多常用的方法进行了声明,方便其子接口使用。下面介绍一些常用的方法:
- int size() :返回此集合中的元素的数目
- boolean isEmpty():判断集合是否为空,返回true表示不包含任何元素
- boolean contains(Object o):判断集合是否包含指定元素,返回 true表示包含该元素
- boolean containsAll(Collection<?> c):判断集合是否包含指定集合的所有元素,返回true表示包含
- Iterator iterator():返回此集合中的元素的迭代器
- Object[] toArray():返回包含此集合中所有元素的数组。(数组和集合之间的桥梁)
- boolean add(E e):确保此集合包含指定的元素(可选操作)。返回 true表示添加成功
- boolean addAll(Collection<? extends E> c):将指定集合中的所有元素添加到这个集合,返回true表示添加成功
- boolean remove(Object o):从这个集合中移除指定元素的一个实例,返回true表示删除成功
- boolean removeAll(Collection<?> c):删除此集合中包含的指定集合所有元素,返回true表示删除成功
- boolean retainAll(Collection<?> c):仅保留包含在指定集合中的这个集合中的元素(可选操作),换句话说,从这个集合中移除所有不包含在指定集合中的元素的所有元素。
- boolean equals(Object o):将指定的对象与此集合进行比较,以进行相等性
代码示例
/*
collection 常用功能
*/
import java.util.ArrayList;
import java.util.Collection;
public class Demo1 {
public static void main(String[] args) {
//创建一个集合对象collection1
Collection<Integer> collection1 = new ArrayList<>();
Collection<Integer> collection2 = new ArrayList<>();
//collection1添加元素 add
collection1.add(1);
collection1.add(2);
collection1.add(3);
System.out.println("这是collection1添加元素后:"+ collection1);
//collection2添加元素 add
collection1.add(2);
collection2.add(4);
collection2.add(5);
System.out.println("这是collection2添加元素后:"+ collection2);
//collection1添加collection2 addAll
collection1.addAll(collection2);
System.out.println("这是collection1添加collection2集合后:"+ collection1);
//collection1删除元素 remove
collection1.remove(1);
System.out.println("这是collection1删除元素后:"+ collection1);
//collection1删除collection2集合中相同的元素 removeAll
collection1.removeAll(collection2);
System.out.println("这是collection1删除collection2集合中相同的元素后:"+ collection1);
//判断collection1集合是否为空集合 isEmpty
boolean empty = collection1.isEmpty();
System.out.println("collection1集合是否为空:"+empty);
//判断collection1集合中是否存在一个与obj对象equals相等的元素,存在返回true
boolean contains = collection1.contains(1);
System.out.println("collection1集合是否存在1:"+contains);
//判断collection2集合中的元素是否在collection1集合中都存在
boolean containsAll = collection1.containsAll(collection2);
System.out.println("collection2集合中的元素是否在collection1集合中都存在:"+containsAll);
//获取当前集合的大小 size();
int size = collection1.size();
System.out.println("collection1集合的大小:"+size);
//获取当前集合中所有元素的数组 toArray()
Object[] objects = collection1.toArray();
System.out.println("collection1集合对应的数组:"+ objects);
//获取当前集合中仅保留两个集合的交集 retainAll();
System.out.println(collection1.removeAll(collection2));;
}
}
Map
基本介绍
Map与Collection集合类和数组不同,其存储的是具有映射关系或者是键值对的元素。这里的元素指的是两组数据:key和value,它们都可以使任何引用类型的数据,但注意:key不能重复。这样的话就可以通过指定的key就可以取出对应的value。(Map非常重要的特征)。Map接口有四个比较重要的实现类,分别是HashMap、LinkedHashMap、TreeMap和HashTable,它们的区别如下:
- HashMap:元素是没有顺序的;key值可以为null,但只能有一个key为null;它是线程不安全的;
- LinkedHashMap:继承自HashMap,它主要是用链表实现来扩展HashMap类,元素是可以有序的;
- TreeMap:基于红黑树数据结构的实现,键值可以使用Comparable或Comparator接口来排序;SortedMap是Map的子接口,使用它可以确保图中的条目是排好序的
- HashTable:它也是一个散列表,存储的内容是键值对映射;key和value不可为空;它是线程安全的;
常用方法
Map接口中对很多常用的方法进行了声明,方便其子接口使用。下面介绍一些常用的方法:
- int size():返回此集合中的元素的数目
- boolean isEmpty():判断集合是否为空,返回true表示不包含任何元素
- boolean containsKey(Object key):判断Map是否包含一个指定的键映射,返回 true表示包含
- boolean containsValue(Object value):判断是否映射到指定的值的一个或多个键,返回 true表示存在
- V get(Object key):返回指定的键映射的值,或 null如果这个Map不包含的键映射
- V put(K key, V value):将指定的值与此映射中的指定键关联。如果映射以前包含一个键的映射,旧值将被指定的值替换
- void putAll(Map<? extends K,? extends V> m):从指定的映射到这个Map复制所有的映射
- V remove(Object key):如果存在,则从该Map中移除一个键的映射
- boolean equals(Object o):将指定的对象与此映射的相等性进行比较。返回 true表示相同的映射
- int hashCode():返回此映射的哈希代码值
- default boolean remove(Object key, Object value):仅当它当前映射到指定的值时,为指定的键移除条目
- default boolean replace(K key,V oldValue, V newValue):仅当当前映射到指定的值时,替换指定的键的条目
- default V replace(K key, V value):仅当它当前映射到某一值时,替换指定的键的条目。
- void clear():从这个映射中移除所有的映射。这个调用返回后的Map将是空的
代码示例
/*
Map中常用的方法
*/
import java.util.HashMap;
import java.util.jar.JarEntry;
public class Demo5 {
public static void main(String[] args) {
//创建 map对象
HashMap<String, Integer> map = new HashMap<String, Integer>();
HashMap<String, Integer> map2 = new HashMap<String, Integer>();
//添加元素到集合
map.put("jack", 80);
map.put("marry", 99);
map.put("lucy", 80);
System.out.println(map);
map2.put("小明", 80);
map2.put("marry", 99);
map2.put("小王", 80);
System.out.println(map2);
//返回此集合中的元素的数目
int size = map.size();
System.out.println("集合中的数目为:" +size);
//判断集合是否为空,返回true表示不包含任何元素
boolean empty = map.isEmpty();
System.out.println("集合是否为空:" + empty);
//判断Map是否包含一个指定的键映射,返回 true表示包含
boolean containsKey = map.containsKey("jack");
System.out.println("集合中是否包含jack:" + containsKey);
//判断是否映射到指定的值的一个或多个键
boolean containsValue = map.containsValue(80);
System.out.println("集合中是否包含80:" + containsValue);
//返回指定的键映射的值
Integer integer = map.get("marry");
System.out.println("返回marry的值:" + integer);
//将指定的值与此映射中的指定键关联
map.put("jack", 100);
System.out.println(map);
//从指定的映射到这个Map复制所有的映射
map.putAll(map2);
System.out.println(map);
//从该Map中移除一个键的映射
System.out.println(map.remove("jack"));
System.out.println(map);
//将指定的对象与此映射的相等性进行比较。返回 true表示相同的映射
boolean equals = map.equals(map2);
System.out.println(equals);
//返回此映射的哈希代码值
int hashCode = map.hashCode();
System.out.println("此映射的hashCode是:" + hashCode);
//在该映射中的每个条目执行给定的操作
Integer replace = map.replace("jack", 110);
System.out.println(map);
//当前映射到指定的值时,替换指定的键的条目
map.replace("jack",110,666);
System.out.println(map);
//从这个映射中移除所有的映射
map.clear();
System.out.println(map);
}
}
相关文章
暂无评论...