Java集合框架

Java集合框架提供了一套性能优良,使用方便的接口和类,它们位于java iava.util包中。因此使用Java集合要导包。

集合框架包含三大块内容:对外的接口、接口的实现和对集合运算的算法。

 

1.接口

        collection接口:存储一组不唯一,无序的对象。

        

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

        

        set接口:存储一组唯一,无序的对象。

        

        map接口:存储一组键值对象,提供key到value的映射。

        

        


2.list接口实现类        

        

1.ArrayList类:实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高。

        

        常用方法:

方法名

说明

boolean add(Object o)

在列表的末尾顺序添加元素,走起始索引位置从0开始

void add(int index,Object o)

在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间,添加数以后,其余的数都往后挪。长度会发生改变。

int size()

返回列表中的元素个数(有效元素个数)

Object get(int index)

返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换

boolean contains(Object o)

判断列表中是否存在指定元素

boolean remove(Obiect o)

从列表中删除元素(元素往前挪)

Object remove(int index)

从列表中删除指定位置元素,起始索引位置从0开始

        1.导入ArraysList类:

import java.util.ArraysList;

        2.创建对象:

ArraysList<数据类型> 对象名 = new ArraysList<>;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        //创建集合
        ArrayList list = new ArrayList<>();
        //向集合添加元素
        list.add(1.0);
        list.add(2.0);
        list.add(3.0);
        //指定位置插入内容,其他内容往后推
        list.add(1,4.0);
        
        //替换特定位置的值
        list.set(1,5.0);
        
        //根据值删除内容(元素往前移)
        list.remove(5.0);
        //删除特定位置的元素
        list.remove(1);
        
        //创建集合2(用于删除)
        ArrayList list1 = new ArrayList<>();
        list1.add(1.0);
        list1.add(2.0);
        //删除list中在集合list1存在的元素
        list.removeAll(list1);
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));//获取指定位置的元素
        }
        //清空集合
        list.clear();
        System.out.println(list.size());//集合有效元素的个数(集合长度)
        
    }
}

2.LinkedList类:采用链表存储方式,插入,删除元素时效率比较高。

        

        LinkedList类常用方法:

        

    1.导入LinkedList类:

import java.util.LinkedList;

        2.创建对象:

LinkedList <数据类型> 对象名 = new LinkedList<>;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        LinkedList list = new LinkedList();//创建集合
        list.add(1.0);//向集合添加元素
        list.add(2.0);
        list.add(3.0);
        //向集合首部添加元素
        list.addFirst(4.0);
        //向集合尾部添加元素
        list.addLast(6.0);

        //获取集合首部元素
        list.getFirst();
        //获取集合尾部元素
        list.getLast();
        
        //删除集合首部元素
        list.removeFirst();
        //删除集合尾部元素
        list.removeLast();

        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

    }
}

 

3.set接口

        1.Set 接口:

                是一种比较简单的集合。集合中的对象并不按特定的方式排序,并且不能保存重复的对象(值重复)。

                继承Collection接口。

                由于Set集合没有索引和get()方法,所以取出方法:迭代器和for增强循环。

        2.HashSet:

                实现Set接口。

        3.TreeSet:

                底层数据结构是二叉树。可以对Set集合的元素按照指定规则进行排序。线程不同步的。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        //set集合唯一、无序
        Set set = new HashSet<>();//创建set集合
        set.add("a");//向集合中添加元素
        set.add("b");
        set.add("c");
        set.add("d");
        
        set.remove("a");//根据值删除元素
        set.contains("a");//判断该元素是否在集合中,返回值类型为boolean
        
        //由于set集合是无序的,而且没有下标所以不能使用get()方法,
        //因此遍历集合要使用迭代器或者for增强循环

        //迭代器
        Iterator iterator = set.iterator();
        while(iterator.hasNext()){
            //检查序列是否还有下一个元素,返回值类型为boolean
            System.out.println(iterator.next());//获得序列中下一个元素
        }

        //for增强循环
        for(Object object : set){
            //这里的数据类型为什么要使用Object,
            //是因为set集合的数据类型是Object
            System.out.println(object);
        }
        
    }
}

        以下代码验证了set集合唯一指的是值的唯一性。 

Set set = new HashSet<>();
String s1 = new String("java");
String s2 = s1;
String s3 = new String("JAVA");
set.add(s1);
set.add(s2);
set.add(s3);
//输出set集合的长度
System.out.println(set.size());//结果:2

Set set1 = new HashSet<>();
String a1 = new String("java");
String a2 = a1;
String a3 = new String("java");
set.add(a1);
set.add(a2);
set.add(a3);
System.out.println(set1.size());//结果:1

4. Map接口

5.Iterator接口        

        迭代器是一种特殊的接口,用于遍历集合中的元素。

        next():获得序列中的下一个元素。

        hashNext():检查序列是否还有下一个元素。

        remove():将迭代器返回的元素删除。      

        1.导包

import java.util.Interator;

        2.创建迭代器

ArrayList arrayList = new ArrayList();
Iterator iterator = arrayList.iterator();
public class Demo03 {
    public static void main(String[] args) {
        ArrayList arrayList =new ArrayList();
        arrayList.add("aaa");
        arrayList.add("bbb");
        arrayList.add("ccc");

        Iterator iterator = arrayList.iterator();//使用迭代器遍历
        while (iterator.hasNext()){
             //获取迭代数据
            System.out.println(iterator.next());
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值