Java

集合

2022-02-26  本文已影响0人  马佳乐

为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java提供了集合类,集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所有集合类都位于java.util包下
Java的集合类主要由两个接口派生而出:CollectionMap
Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。

Collection集合:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set。

Map集合:双列集合类的根接口,用于存储具有键(Key)、值(Value)映射关系的元素,每个元素都包含一对键值,在使用Map集合时可以通过指定的Key找到对应的Value。

Collection接口

Collection接口是List、Set和Queue接口的父接口,该接口里定义的方法既可用于操作Set集合,也可用于操作List和Queue集合。
Collection提供了大量添加、删除、访问的方法来访问集合元素。

List接口

List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。
List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,而且还增加了一些根据元素索引来操作集合的特有方法

ArrayList集合

java.util.ArrayList
ArrayList是List接口的一个实现类,在ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。
ArrayList集合中大部分方法都是从父类Collection和List继承过来的,其中add()方法和get()方法用于实现元素的存取。
在JDK1.5版本之后,提出了泛型机制,语法如下:
类名<T>
T代表一个类型的名称,只能是类类型,包括自定义类,不能使基本类型
Object类为根类,很多程序员为了使程序更为通用,设计程序时通常使传入的值与返回的值都以Object类型为主,当需要使用这些实例时,必须正确地将该实例转换为原来的类型,否则运行时将会发生ClassCastException异常。
在声明类的同时定义该类所使用的泛型,则这个类被称作泛型类。

E用于描述一种具体的类型,这种类型需要在构造ArrayList实例对象时指定。

(1)创建ArraysList实例

ArrayList<T> list=new ArrayList<T>();

(2)向ArraysList中保存数据

(3)其他常用方法

foreach循环

JDK5.0 开始提供foreach循环,是一种更简洁的for循环,也称增强for循环,用于遍历数组或集合中的元素。
语法格式:

    for(容器中元素类型  临时变量:容器变量){
        循环体
    }

与for循环相比,foreach循环不需要获得容器的长度,也不需要根据索引访问容器中的元素,但它会自动遍历容器中的每个元素,其循环次由容器中元素的个输入决定,每次循环时,foreach中通过变量将当前循环的元素记住,并对其进行操作。
注意:
当时用foreach循环遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改。

foreach循环举例:

public class Ex{     
      public static void main(String args[]){
    String strs[]={"aaa","bbb","ccc"};
    //foreach循环遍历数组
    for(String str: strs){  str="ddd";  }
    System.out.println("foreach循环修改后的数组:");
    for(String s:strs){     System.out.print(s+"  ");   }
    System.out.println();
    //for循环遍历数组
    for(int i=0;i<strs.length;i++){ strs[i]="ddd";  }
    System.out.println("普通for循环修改后的数组:");
    for(String s:strs){     System.out.print(s+"  ");   }
      } 
}

本程序的运行结果是:

Tforeach循环修改后的数组:
aaa  bbb  ccc  
普通for循环修改后的数组:
ddd  ddd  ddd  
上一篇下一篇

猜你喜欢

热点阅读