Java基础-集合

一、概述:

  为了在程序中保存数目不确定的对象,java提供了一系列的类,这些类可以存储任意类型的对象,并且长度可变,这些类统称为集合。集合类都位于java.until包中,使用时必须导包。

  集合按照其存储结构可以分为两大类,即单列集合Collection和双列集合Map,这两种集合的特点具体如下。
Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List和 Set。其中,List的特点是元素有序、可重复。Set的特点是元素无序且不可重复。List 接口的主要实现类有ArrayList和LinkedList,Set接口的主要实现类有HashSet和TreeSet。
Map:双列集合类的根接口,用于存储具有键(Key)、值(Value)映射关系的元素,每个元素都包含一对键值,其中键值不可重复且每个键最多只能映射到一个值,在使用Map集合时可以通过指定的Key找到对应的 Value。例如,根据一个学生的学号就可以找到对应的学生。Map接口的主要实现类有HashMap和 TreeMap。

二、Collection接口 

  Collection是所有单列集合的父接口,它定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。Collection接口的常用方法如下。

三、List接口 

  1.list接口简介:

  List接口继承自Collection接口,是单列集合的一个重要分支。List集合允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引访问List集合的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。

  List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,还增加了一些根据元素索引操作集合的特有方法。LIst常用方法如下:

  2.ArrayList集合 

  ArrayList集合是List接口的一个实现类,它是程序中最常见的一种集合。在ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。

  ArrayList集合中大部分方法都是从父类Collection和List继承过来的,其中add()方法和get方法分别用于实现元素的存入和取出。

  由于ArrayList集合的底层使用一个数来保存元素,在增加或删除指定位置的元素时,会创建新的数组,效率比较低,因此不适合做大量的增加或删除操作。因为这种数组的结构允许程序通过索引的方式来访问元素,所以使用ArrayList集合查找元素很便捷。 

3.Iterator接口

  在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,Java专门提供了一个接口Iterator。Iterator接口也是集合中的一员,但它与Collection、Map接口有所不同,它们两者主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也称为迭代器。

import java.util.*;
public class Example03 {
      public static void main (String[] args) {
            ArrayList list = new ArrayList(); //创建ArrayList集合

            list.add ("张三"); //向该集合中添加字符串

            list.add ("李四");

            list.add ("王五");

            list.add ("赵六");
            Iterator it = list.iterator (); // 获取Iterator 对象    
            while (it.hasNext()){    //判断ArrayList集合中是否存在下一个元素    
                 Object obj = it.next();    // 取出ArrayList集合中的元素    
                 System.out.println (obj);    

             }

      }

}

  4.foreach循环 

     为了简化书写,从JDK5开始,提供了foreach循环。foreach循环是一种简洁的for循环,也称增强for循环。foreach循环用于遍历数组或集合中的元素。

四、Set接口

 1.Set接口简介:

   Set接口和List接口一样,同样继承自Collection接口,它与Collection接口的方法基本一致,并没有对Collection接口进行功能扩充,只是比Collection接口更严格了。与List接口不同的是,Set元素无序,并且都会以某种规则保证存入的元素不出现重复。

   Set接口主要有两个实现类,分别是HashSet和TreeSet。其中,HashSet是根据对象的散列值来确定元素在集合中的存储位置,具有良好的存取和查找性能。TreeSet则是以二叉树的方式来存储元素,它可以实现对集合中的元素进行排序。

(1)HashSet集合用法部分展示:

import java.util.*
public class Example07 {

        public static void main (String[] args){
                HashSet set - new HashSet(; // 创建HashSet集合

                set.add ("张三"); // 向该 Set集合中添加字符串
                set.add ("李四");

                set.add("王五");

                set .add ("李四");// 向该 set集合中添加重复元素
                Iterator it = set.iterator();    // 获取 Iterator 对象    
                while (it.hasNext ()){    // 通过while循环,判断集合中是否有元素    
                Object obj = it.next();//如果有元素,就通过迭代器的next()方法获取元素

                         System.out.println (obj);
}

(2)TreeSet集合用法部分展示:

五、Map接口 

  1.Map接口简介:

        Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为映射。从Map集合中访问元素时,只要指定了Key,就能找到对应的Value。

   2.Map接口的常用方法: 

方法说明功能描述
void put(Object Key,Object value)将指定的值与映射中的指定键关联
Object get (Object Key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null
void clear()删除所有的键值对元素
V remove(Object key)

根据键删除对应的值,返回被删除的值

int size()返回集合中的键值对的个数
boolean containsKey(Object key)如果此映射包含指定键的映射关系,则返回true
boolean containsValue(Object value)如果此映射将一个活多个键值映射到指定值,则返回true
Set  keySet()返回此映射中包含的键的Set视图
Collection<V>values()返回此映射中包含的值的Collection视图
Set<Map.Entry<K,V>>entry Set()返回此映射中包含的映射关系的Set视图

3.HashMap集合 

  HashMap集合是Map接口的一个实现类,用于存储键值映射关系,但HashMap集合没有重复的键且键值无序。

4.TreeMap集合 

    Map接口提供了另外一个可以对集合中元素键值进行排序的类TreeMap:

六、泛型 

    泛型是程序设计语言的一种特性。它允许程员在使用强类型程序设计语言编写代码时定义一些可变部,这些可变部分在运行前必须做出指明。在编程中用泛型来代替某个实际的类型,而后通过实际调用时传入或推导的类型来对泛型进行替换,以达到代码复用用的目的。在使用泛型的过程中,操作的数据类型被指定为一个参数,这种参数类型在类、接口和方法中,分别称为泛型类、泛型接口、泛型方法。相对于传统上的形参,泛型可以使参数具有更多类型上的变化,使代码能更好地复用。

七、小结

  Java 中的集合框架是Java 核心 API 的一部分,它提供了一组实现了常见数据结构的类和接口,使得开发者能够更方便地操作和管理数据。

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值