collection常用方法和Map常用方法

本文深入讲解了Java中Collection和Map接口的基本用法及常用方法,包括List、Set、Queue和HashMap、LinkedHashMap的特点与区别。详细解释了各种集合的创建、操作及应用场景,适合初学者和进阶开发者阅读。

关于collection常用的方法,下面这个链接okk:
https://www.cnblogs.com/xiaostudy/p/9502409.html
Collection是一个容器,是一个顶层容器,她有三个的下家List,set,queue;
所以创建的时候,应该是如下这样创建:

Collection coll=new Vector();

简单总结一下常用方法:
(1)add:就是一般的add;
(2)addAll
在这里插入图片描述
(3).clear:清空集合中所有元素;
(4).contains(Object o),就是一般是否包含一个元素,存在返回true,不存在返回false;
(5).containAll(Collection<?> c):是否包含另一集合中所有元素,若包含返回true,否则返回false;
(6).equals(Object o):重写了equals方法,所以比较的是里面元素是否相等,如果不相等,返回false;
(7).hashCode:返回Collection的哈希码值;
(8).isEmpty:是否包含有元素,存在返回true,不存在返回false;
(9).iterator:返回在Collection集合的元素上进行迭代的迭代器;
注意:迭代过程中不能使用集合里的添加,删除等方法修改集合,否则会报错;
如果想操作集合,只能使用迭代器里面的方法:
在这里插入图片描述
(10).removeAll(Collection<?> c):在本集合中删除集合c中含有的元素(注意和clear的区别,clear是清除本集合中所有元素)
在这里插入图片描述
(11)retainAll(Collection<?> c):在本集合中仅保留集合c中有的元素,其余全剔除。如果集合C与本集合没有相同的元素,则本集合返回空。
在这里插入图片描述
(12)size(),返回集合长度;
(13).toArry(),将该集合以数组的形式返回,注意他是返回一个Object类型的数组,在之后的数据操作都是针对object类型的;
在这里插入图片描述

.toArry(T[ ] a):返回一个既定类型(我们需要的类型)的数组,如下图所示:
在这里插入图片描述

map集合的特点:
(1)map集合是一个双列集合,一个元素包含两个值(key&value);
(2)map集合中的元素,key和value可以相同也可以不同;
(3)map集合中的元素,key不允许重复,value可以重发;
(4)map中的元素,key和value一一对应;
HashMap<k,v>集合implements Map<k,v>

HashMap集合特点:
1:HashMap底层是哈希表,查询的速度特别快;
Jdk1.8之前:数组+单向链表
Jdk1.8之后:数组+单向链表/红黑树(链表的长度超过8):提高查询的速度

2:hashMap是一个无序的集合,存储元素和取出元素的顺序可能不一样

LinkedHashMap的特点:
1:LinekedHashMap集合底层是哈希表+链表
2:LinkedHashMap集合是一个有序的集合,存储元素和取出元素顺序是一致的

Map常用的函数:
1:put<k,v>:把指定的键与指定的值添加到Map集合中。返回值value:若map中没有该键,则返回null;若key与Map已有的key重复,则使用新的value值覆盖掉原来的,返回被替换的value值。
在这里插入图片描述

2.remove(key),把指定键的键值对移除,若存在指定键,返回被删除的value值。若不存在,返回Null。
.remove(key,value):删除成功返回true,失败返回false;

3.get(key),按照key值,获取对应的value值。若存在这样的键值对,返回value值,若不存在返回null;

4.containsKey(key),包含关系:判断集合中是否包含指定的键。包含返回true,不包含返回false;
.containsValue(value),查找是否存在指定的Value值,如果不存在返回true,存在返回true。

5.KetSet:获取Map集合中所有的键,存储到Set集合中,返回一个Set集合。

6.entrySet():获取到Map集合中所有的键值对对象的集合(Set集合);

public static void main(String args[]) {
        Map<String,Integer> test=new HashMap<String,Integer>();
        test.put("1",1);
        test.put("2",2);
        test.put("3",3);
        test.put("4",4);
        test.put("5",5);
        System.out.println(test); 
        Set<Map.Entry<String, Integer>> set=test.entrySet();

        System.out.println(set.toString());
        
    }
    

输出:
{1=1, 2=2, 3=3, 4=4, 5=5}
[1=1, 2=2, 3=3, 4=4, 5=5]

### 关于Map接口及其常用方法的总结 #### 基本概念 `Map` 接口是一个双列集合,其中每个元素都包含一个键 (`key`) 一个值 (`value`) 的映射关系。键不允许重复,而值可以重复[^2]。 --- #### Map接口的主要特点 1. **键值对结构**: `Map` 中的每一个元素都是由键值组成的键值对。 2. **唯一性约束**: 键具有唯一性,即同一个键不能出现两次;如果尝试添加已存在的键,则新值会覆盖旧值[^4]。 3. **可为空支持**: 键值都可以为 `null`,但具体行为取决于具体的实现类 (如 `HashMap` 支持单个 `null` 键)[^2]。 --- #### Map接口的核心方法 以下是 `Map` 接口中常用的几个核心方法: 1. **put(Object key, Object value)** 将指定的键/值对存入 `Map` 集合中。如果该键已经存在,则新的值会替换原有的值并返回原值[^1]。 ```java map.put("name", "Alice"); ``` 2. **get(Object key)** 返回与指定键关联的值。如果没有找到对应的键,则返回 `null`。 ```java String name = map.get("name"); // 获取键"name"对应的值 ``` 3. **remove(Object key)** 删除指定键所对应的键值对,并返回被删除的值。如果不存在此键,则返回 `null`。 ```java map.remove("name"); ``` 4. **containsKey(Object key)** 判断是否存在指定的键。如果有则返回 `true`,否则返回 `false`。 ```java boolean hasName = map.containsKey("name"); ``` 5. **containsValue(Object value)** 判断是否存在指定的值。如果有则返回 `true`,否则返回 `false`。 ```java boolean hasAlice = map.containsValue("Alice"); ``` 6. **size()** 返回当前 `Map` 中键值对的数量。 ```java int count = map.size(); ``` 7. **isEmpty()** 如果 `Map` 不含任何键值对,则返回 `true`,否则返回 `false`。 ```java boolean isEmpty = map.isEmpty(); ``` 8. **clear()** 清除 `Map` 中所有的键值对,使其变为空集。 ```java map.clear(); ``` 9. **entrySet()** 返回一个包含所有键值对的对象集合(`Set<Map.Entry<K,V>>`)。这些对象可以通过迭代器访问[^3]。 ```java Set<Map.Entry<String, String>> entries = map.entrySet(); for (Map.Entry<String, String> entry : entries) { System.out.println(entry.getKey() + ": " + entry.getValue()); } ``` 10. **keySet()** 返回一个只包含所有键的集合视图(`Set<K>`),通过它可以遍历所有的键。 ```java Set<String> keys = map.keySet(); for (String key : keys) { System.out.println(key); } ``` 11. **values()** 返回一个只包含所有值的集合视图(`Collection<V>`),通过它可以遍历所有的值。 ```java Collection<String> values = map.values(); for (String value : values) { System.out.println(value); } ``` --- #### 实现类的特点 常见的 `Map` 接口实现类有以下几个: - **HashMap** - 使用哈希表存储数据,性能较高。 - 允许 `null` 键 `null` 值。 - 是线程不安全的实现。 - **LinkedHashMap** - 继承自 `HashMap`,按插入顺序保存键值对。 - **TreeMap** - 提供按键排序的功能,基于红黑树实现。 - **Hashtable** - 类似于 `HashMap`,但它实现了线程安全性。 - 不允许 `null` 键 `null` 值。 --- #### 示例代码 以下是一段综合使用的示例代码: ```java import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); // 添加键值对 map.put("Alice", 25); map.put("Bob", 30); // 修改已有键的值 map.put("Alice", 26); // 获取某个键的值 System.out.println(map.get("Alice")); // 输出: 26 // 遍历键值对 for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } // 移除某个键 map.remove("Bob"); // 检查是否为空 System.out.println(map.isEmpty()); // false } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值