Java基础——集合框架概述

1.什么是集合?

需要存储的对象个数不确定,使用集合去操作。

2.集合的特点

集合只用于存储对象(数组主要存储变量)

集合长度是可变的(数组不可变)

集合可以存储不同类型的对象

3.什么是集合框架?

集合框架是一个用来代表和操纵集合的统一架构。

所有集合框架都包含以下内容:

接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。

实现类:是集合接口的具体实现。从本质上讲,她是可重复使用的数据结构。

算法:是实现集合接口对象里的方法执行的一些有用的计算。例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

 4.Collection 接口

特点:用来存储对象的容器虽然有很多并且结构不同,但是都具备着共性,可以不断向上抽取,最终就形成集合框架,该框架的顶层之一就是Collection接口。该接口定义了集合框架中最共性的功能。最终使用的时候,其实使用的是该框架最子类的对象。

Iterable接口允许对象成为“foreach”语句的目标,即该集合对象允许迭代。

类集接口Collection是Iterable的子接口,所以所有类集对象可以迭代访问。

Collection接口及子类一次只能存放一个元素,Collection有两个子接口:

List(列表)、Set(集)

List:元素存取是有序的,可重复存放元素

Set:元素存取是无序的,不可以重复存放元素

增加元素、删除元素、是否存在某个元素、合并集合、取交集、清除所有元素

import java.util.ArrayList;
import java.util.Collection;

public class CollectionStudy {
    public static void main(String[] args) {
        Collection fruit=new ArrayList();
        //增加元素
        fruit.add("apple");
        fruit.add("pear");
        fruit.add("banana");
        fruit.add("orange");
        fruit.add("apple");
        System.out.println(fruit);
        //删除元素
        fruit.remove("banana");
        System.out.println(fruit);
        //判断是否存在某个元素
        boolean bool1=fruit.contains("pear");
        System.out.println(bool1);
        Collection fruit2=new ArrayList();
        fruit2.add("potato");
        fruit2.add("orange");
        Collection fruit3=new ArrayList();
        fruit3.add("potato");
        fruit3.add("orange");
        //合并集合
        fruit2.addAll(fruit);
        System.out.println(fruit2);
       //取交集
        boolean bool2=fruit2.retainAll(fruit3);//返回值是判断fruit2是否由于调用retainAll方法使元素发生更改,更改true,否则false
        System.out.println(bool2);
        System.out.println(fruit2);
       //清除所有元素
        fruit.clear();
        System.out.println(fruit);
    }

}

List接口:新增很多可以操纵元素下标的方法

package com.test.www.list;

import java.util.ArrayList;
import java.util.List;

public class ListStudy {
    public static void main(String[] args) {
        List fruits=new ArrayList<>();
        //List对比collection:新增了很多可以操作元素下标(位置、索引)的方法
        //1.追加元素
        fruits.add("apple");
        fruits.add("pear");
        fruits.add("banana");
        fruits.add("apple");
        System.out.println(fruits);
        //2.插入元素
        fruits.add(1,"orange");
        System.out.println(fruits);
        //3.删除元素
        fruits.remove(2);
        System.out.println(fruits);
        //4.修改元素
        Object fruits1=fruits.set(3,"badApple");
        System.out.println(fruits1);//被修改的元素
        System.out.println(fruits);

        //5.获取元素
        Object fruits3=fruits.get(2);
        System.out.println(fruits3);
        //6.获取子集
        List fruits4=fruits.subList(0,3);//获取元素下标区间为左闭右开 [0,3)
        System.out.println(fruits4);

    }
}

LinkedList接口:可操作首尾元素

package com.test.www.list;
import java.util.LinkedList;

public class LinkedStudy {
    public static void main(String[] args) {
        LinkedList fruit=new LinkedList();
        //增加元素

        fruit.add("pear");
        fruit.add("banana");
        fruit.add("orange");

        //1.增加首尾元素
        fruit.addFirst("apple");
        fruit.addLast("apple");
        System.out.println(fruit);


        fruit.offerFirst("apple");
        fruit.offerLast("apple");
        System.out.println(fruit);

        //2.获取元素
        Object fruitGetF=fruit.getFirst();
        Object fruitGetL=fruit.getLast();
        System.out.println(fruitGetF);
        System.out.println(fruitGetL);
        System.out.println(fruit);

        Object fruitPeekF=fruit.peekFirst();
        Object fruitPeekL=fruit.peekLast();
        System.out.println(fruitPeekF);
        System.out.println(fruitPeekL);
        System.out.println(fruit);

        //3.移除首尾元素
        Object fruitRemoveF=fruit.removeFirst();
        Object fruitRemoveL=fruit.removeLast();
        System.out.println(fruitRemoveF);
        System.out.println(fruitRemoveL);
        System.out.println(fruit);

        Object fruitPollF=fruit.pollFirst();
        Object fruitPollL=fruit.pollLast();
        System.out.println(fruitPollF);
        System.out.println(fruitPollL);
        System.out.println(fruit);
    }
}

遍历集合元素的方法:

1.通过for循环遍历集合

2.通过forEach循环遍历

3.通过集合自有的Interator(迭代器)遍历集合元素

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListErgodic {
    public static void main(String[] args) {
        List fruits=new ArrayList<>();
        fruits.add("apple");
        fruits.add("pear");
        fruits.add("banana");
        fruits.add("apple");
        //1.通过for循环遍历集合元素
        for (int i = 0; i < fruits.size(); i++) {
            System.out.println(fruits.get(i));
        }
        //2.通过forEach循环遍历集合元素
        for (Object obj:fruits){
            System.out.println(obj);
        }
        //3.通过集合自有的Iterator(迭代器)遍历集合元素
        Iterator iterator=fruits.iterator();
        while (iterator.hasNext()){
            Object current=iterator.next();
            System.out.println(current);
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值