java-集合

1.Java 集合框架

在这里插入图片描述

集合框架体系:
在这里插入图片描述

集合接口,集合框架定义了一些接口。本节提供了每个接口的概述:

2.接口描述

1、 Collection 接口
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)
Collection 接口存储一组不唯一,无序的对象。

Collection接口中提供的一些常用的方法,使用于set和List:

函数意义
boolean add(E e)确保此集合包含指定的元素(可选操作)
boolean contains(Object o)如果此集合包含指定的元素,则返回 true 。
boolean equals(Object o)将指定的对象与此集合进行比较以获得相等性。
int hashCode()返回此集合的哈希码值。
boolean isEmpty()如果此集合不包含元素,则返回 true 。
Iterator iterator()返回此集合中的元素的迭代器。
boolean remove(Object o)从该集合中删除指定元素的单个实例(如果存在)(可选操作)。
int size()返回此集合中的元素数。
Object[] toArray()返回一个包含此集合中所有元素的数组。

2、 List 接口
List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。

List 接口存储一组不唯一,有序(插入顺序)的对象。

常见的实现类:
ArrayList、LinkedList

3、 Set
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。Set 接口存储一组唯一,无序的对象。

常见的实现类:
HashSet

4、 SortedSet
继承于Set保存有序的集合。

5、 Map
Map 接口存储一组键值对象,提供key(键)到value(值)的映射。

常见的实现类:
HashMap ,LinkedHashMap

map接口中一些常用的方法:

函数意义
V put(K key, V value)将指定的值与该映射中的指定键相关联(可选操作)。
V remove(Object key)如果存在(从可选的操作),从该地图中删除一个键的映射。
default V replace(K key, V value)只有当目标映射到某个值时,才能替换指定键的条目
default boolean replace(K key, V oldValue, V newValue)仅当当前映射到指定的值时,才能替换指定键的条目。
boolean containsKey(Object key)如果此映射包含指定键的映射,则返回 true 。
boolean containsValue(Object value)如果此地图将一个或多个键映射到指定的值,则返回 true 。
Set<Map.Entry<K,V>> entrySet()返回此地图中包含的映射的Set视图。
Set keySet()返回此地图中包含的键的Set视图。
V get(Object key)返回到指定键所映射的值,或 null如果此映射包含该键的映射。
int hashCode()返回此地图的哈希码值。
Collection values()返回此地图中包含的值的Collection视图。
int size()返回此地图中键值映射的数量。
boolean equals(Object o)将指定的对象与此映射进行比较以获得相等性。

6 Map.Entry
描述在一个Map中的一个元素(键/值对)。是一个 Map 的内部接口。

7 SortedMap
继承于 Map,使 Key 保持在升序排列。

8 Enumeration
这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

3.集合遍历(除了map集合)

import java.util.*;
 
public class Test{
 public static void main(String[] args) {
     List<String> list=new ArrayList<String>();
     list.add("Hello");
     list.add("World");
     list.add("HAHAHAHA");
     //第一种遍历方法使用 For-Each 遍历 List
     for (String str : list) {            
     //也可以改写 for(int i=0;i<list.size();i++) 这种形式
        System.out.println(str);
     }
 
     //第二种遍历,把链表变为数组相关的内容进行遍历
     String[] strArray=new String[list.size()];
     list.toArray(strArray);
     for(int i=0;i<strArray.length;i++) //这里也可以改写为  for(String str:strArray) 这种形式
     {
        System.out.println(strArray[i]);
     }
     
    //第三种遍历 使用迭代器进行相关遍历
     
     Iterator<String> ite=list.iterator();
     while(ite.hasNext())//判断下一个元素之后有值
     {
         System.out.println(ite.next());
     }
 }
}

4.map集合遍历

Map是java中的接口,Map.Entry是Map的一个内部接口。

Map提供了一些常用方法,如keySet()、entrySet()等方法。

keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。

Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。

map不能直接使用迭代器因为map没有像set继承Collection所以得如下方式使用

import java.util.*;
 
public class Test{
     public static void main(String[] args) {
      Map<String, String> map = new HashMap<String, String>();
      map.put("1", "value1");
      map.put("2", "value2");
      map.put("3", "value3");
      
      //第一种:普遍使用,二次取值
      System.out.println("通过Map.keySet遍历key和value:");
      for (String key : map.keySet()) {
       System.out.println("key= "+ key + " and value= " + map.get(key));
      }
      
      //第二种
      System.out.println("通过Map.entrySet使用iterator遍历key和value:");
      Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
      while (it.hasNext()) {
       Map.Entry<String, String> entry = it.next();
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
      }
      
      //第三种:推荐,尤其是容量大时
      System.out.println("通过Map.entrySet遍历key和value");
      for (Map.Entry<String, String> entry : map.entrySet()) {
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
      }
    
      //第四种
      System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
      for (String v : map.values()) {
       System.out.println("value= " + v);
      }
     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值