首页 > 其他分享 >第二章:集合

第二章:集合

时间:2024-11-12 11:48:32浏览次数:3  
标签:遍历 int Object 接口 集合 元素 第二章

一、集合

1. 概念:一种操作便利的对象容器,存储多个对象,多数情况下可替代数组。

2. 位置:所有集合的接口和相关实现类都是位于 java.util 包中

3. 每一种集合的学习都是从以下方面学习: 集合接口的特点 集合接口中方法 集合接口对应的实现类 集合的遍历 方式

4. 集合分类:

Collection集合

    List集合

   Set集合

Map集合

    Map

 二、Collection集合体系

1. 父接口:Collection接口

(1) Collection接口的特点:存储对象,即存储数据类型Object

(2) Collection接口中的方法:

  boolean add(Object obj) : 添加一个对象。 【重点】

  int size() :返回此集合中的元素个数。 【重点】

  void clear() :清空此集合中的所有对象。

  boolean contains(Object o) : 检查此集合中是否包含o对象

  boolean isEmpty() :判断此集合是否为空

  boolean remove(Object o) :在此集合中移除o对象

      Object[] toArray() :将此集合转换成数组。

(3) 实现类:详见子接口

(4) 遍历:详见子接口

 2. 子接口:List

(1) List接口的特点:存储Object类型的对象,有序、有下标,元素可以重复。

                List下标范围是:0 - 集合元素个数-1 (即 0 - size-1)

(2) 常见的方法:

    boolean add(Object obj) : 添加一个对象。 【重点】

    Object get(int index) //返回集合中指定位置的元素

    void add(int index, Object o) //在index位置插入对象

    boolean addAll(int index,Collection c):将c中元素一次性插入到集合中指定下标

    Object remove(int index) //移除index位置上的元素

    Object set(int index, Object element) //替换index位置上的元素

    List subList(int fromIndex, int toIndex) //返回集合中指定部分的元素

(3) 实现类:ArrayList

(4) 遍历集合:

  a. 下标遍历:

for(int i=0;i<list.size();i++){

        System.out.println(list.get(i));

}

   b. forEach遍历:

      for(数据类型 变量名:集合名){

          // 可以通过变量名操作集合数据

      }

(5) 泛型集合:强制要求集合中数据类型统一

  ArrayList list = new ArrayList();

  a. 前后数据类型一致

  b. 基本数据类型的泛型需要使用对应的包装类    

(6) 不同实现类的区别:

  ArrayList:

      底层用数组实现,查询快,增删慢

      JDK1.2提供,线程不安全,并发效率高。

  Vector:

  底层用数组实现,查询快,增删慢   JDK1.0提供,线程安全,并发效率低。

  LinkedList:

  底层用链表实现,查询慢,增删快

  JDK1.2提供,线程不安全,并发效率快。         

3. 子接口:Set

(1) Set接口的特点:用于存放任意Object对象,无序、无下标、元素不能重复(元素的内容不重复) (2) 方法:全部继承于 父接口 Collection

(3) 实现类:HashSet 注意:为了保证存储在 HashSet集合中对象内容不同,需要覆盖 hashCode和equals方法的

(4) 遍历方式:forEach

(5) 实现类:LinkedHashSet:按照元素添加的顺序进行,无下标、元素不可以重复(和HashSet一致)

 三、Map集合体系

1. 特点:存储键值对(key-value),键:无序、无下标、元素不可以重复;值:无序、无下标、元素可以重复

2. 方法:

 3. 实现类:HashMap

4. 遍历:(1) 键遍历:

         Set keys= stus.keySet();

        // 获取所有的键 // 通过 遍历 set集合获取每一个键

        for(String key:keys){

                Student stu = stus.get(key); // 通过键获取对应的值

        }

(2) 值遍历:

        Collection cs= stus.values();

        // 获取所有的值 // 通过遍历获取 集合中每个值

        for(Student stu:cs){

                System.out.println(stu);

}

(3) 键值对遍历:

        Set> kvs=stus.entrySet();

        // 获取所有的键值对 // 获取每个键值对

        for(Map.Entry kv:kvs){

                // 通过操作 Entry 获取对应的键 和 值

                String s1=kv.getKey();

                Student stu=kv.getValue();

                System.out.println(s1+"-----"+stu);

}

 5. 不同的实现类:

(1) HashMap:JDK1.2版本,线程不安全,运行效率快 ;允许用null 作为key或是value。

(2) Hashtable:JDK1.0版本,线程安全,并发效率慢;不允许null作为key或是value

(3) LinkedHashMap:HashMap的子类,按照元素添加的顺序进行存储

(4) Properties:Hashtable的子类,要求key和value都是String。通常用于配置文件的读取

(5) TreeMap :实现了SortedMap接口(是Map的子接口),可以对key自动排序。

 

标签:遍历,int,Object,接口,集合,元素,第二章
From: https://blog.csdn.net/2301_81052610/article/details/143707910

相关文章

  • Java集合基础——针对实习面试
    目录Java集合基础什么是Java集合?说说List,Set,Queue,Map的区别?说说List?说说Set?说说Map?说说Queue?为什么要用集合?如何选用集合?Java集合基础什么是Java集合?Java集合(JavaCollections)是Java中提供的一种容器,用于存储和管理一组对象。Java集合框架(JavaCollections......
  • 代码随想录之滑动窗口、Java日期api、集合(11.4-11.11)
    代码1、长度最小的子数组⭐使用滑动窗口的思想,外层循环控制结束位置j,内层循环控制起始位置i,看似是双层循环,但时间复杂度是o(2n)。 2、水果成篮自己想法:使用backet1和backet2表示篮子1和篮子2;使用backet1Account和backet2Account分别表示两个篮子里水果的数量,内层循环将i指针......
  • Scala:Scala的Map集合
    Scala的Map概述 Map(映射)是一种可迭代的键值对(Key/Value)结构,所有值都可以通过键来获取,Map中的键都是唯一的。定义Map时,需要为键值对定义类型。 ————Scala的Map的定义————在Java中,Map是以键值对(K,V)的形式存在的,例如(Key1,V1)。在Scala中,Map集合同样是以......
  • 04集合基础-哈希表
    目录1.集合类的线程安全实现1.同步包装器(SynchronizedWrappers)保证线程安全的方式2.并发集合类(ConcurrentCollections)常见的并发集合类保证线程安全的方式3.不可变集合(ImmutableCollections)2.哈希表1.高效的查找、插入和删除操作2.减少内存占用3.支持唯一......
  • 4-2-2.C# 数据容器 - HashSet 扩展(HashSet 集合操作、HashSet 存储对象的特性、HashSe
    HashSet概述HashSet<T>存储的元素是无序的HashSet<T>存储的元素是不可重复的HashSet<T>支持泛型,可以指定存储的元素的类型HashSet<T>不支持索引,不可以通过索引获取或修改元素HashSet<T>不是线程安全的,在多线程环境中需要谨慎使用一、HashSet集合操作1......
  • WPF 集合操作进阶:提取特定字段、转换 ObservableCollection 和过滤数据
    文章目录1.引言2.从List<T>提取特定字段3.将List<T>转换为observableCollection<T>4.过滤List<T>集合5.总结6.完整示例代码1.引言在C#开发中,集合操作是非常常见的任务,特别是在数据处理和用户界面设计中。本文将介绍如何从List<T>中提取......
  • 比较集合
    点击查看代码importlombok.Getter;importjava.util.*;importjava.util.stream.Collectors;publicclassCollectionUtils{/***compare*@paramnewCollection新集合*@paramoldCollection旧集合*@paramcomparator*@......
  • 【用Rust写CAD】第二章 第四节 变量
    文章目录1、变量定义2、变量命名规则3、不可变与可变4、变量隐藏5、类型推断1、变量定义如果要声明变量,需要使用let关键字。每个变量都有一个唯一的名称。声明变量后,可将其绑定到某个值,也可稍后在程序中绑定该值。以下代码声明名为a的变量。leta;a变量......
  • python篇:0基础带你入门python之元组集合字典
    一、元组Python中的元组(`tuple`)是一种有序、不可变的集合数据类型。与列表(`list`)类似,元组用于存储多个元素,但一旦创建,它的内容不能修改。元组使用圆括号`()`来定义。1.元组的定义元组可以通过圆括号`()`来定义,也可以省略括号,直接通过逗号分隔元素。示例:#使用圆括......
  • list集合distinctby的使用
    最近使用集合的distinctby根据元素的某个属性进行过滤,但是最后的结果是需要有序的,所以想知道过滤后的顺序会不会改变。如何使用官方文档:根据指定的键选择器函数返回序列中的不同元素我的理解:根据指定的属性去重代码:varlista=newList<People>();lista.Add(newPeople()......