Java基础之集合框架系列(二)

Java集合框架是什么?说出一些集合框架的优点? 干货太重,且文字比较多。需要花费时间与耐心细细咀嚼,但是真的能收获到很多。 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。 1... 阅读详情

1.List集合共性方法

1.常用方法

List特有方法:

void add(int index, E element)
在列表的指定位置插入指定元素
boolean addAll(int index, Collection<? extends E> c)
将指定 collection 中的所有元素都插入到列表中的指定位置。

E remove(int index)
移除列表中指定位置的元素。

E set(int index, E element)
用指定元素替换列表中指定位置的元素。
E get(int index)
返回列表中指定位置的元素。

int indexOf(Object o)
返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。
int lastIndexOf(Object o)
返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。

ListIterator<E> listIterator()
返回此列表元素的列表迭代器(按适当顺序)。
ListIterator<E> listIterator(int index)
返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。

List<E> subList(int fromIndex, int toIndex)
返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。 (即集合的截取操作)

继承自Collecction的方法:

boolean add(E e)
向列表的尾部添加指定的元素

boolean addAll(Collection<? extends E> c)
添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序

void clear()
从列表中移除所有元素(可选操作)。

boolean contains(Object o)
如果列表包含指定的元素,则返回 true。

boolean containsAll(Collection<?> c)
如果列表包含指定 collection 的所有元素,则返回 true。

boolean equals(Object o)
比较指定的对象与列表是否相等。

int hashCode()
返回列表的哈希码值。

boolean isEmpty()
如果列表不包含元素,则返回 true。

Iterator<E> iterator()
返回按适当顺序在列表的元素上进行迭代的迭代器。

boolean remove(Object o)
从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。

boolean removeAll(Collection<?> c)
从列表中移除指定 collection 中包含的其所有元素(可选操作)。

boolean retainAll(Collection<?> c)
仅在列表中保留指定 collection 中所包含的元素(可选操作)。

int size()
返回列表中的元素数。

Object[] toArray()
返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。

<T> T[] toArray(T[] a)
返回按适当顺序(从第一个元素到最后一个元素)包含列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。

2.示例程序

常见操作:

        //部分代码

        //创建List集合子类ArrayList对象
        ArrayList<String> al=new ArrayList<String>();

        //向集合中初始化添加对象
        al.add("demo1");
        al.add("demo2");
        al.add("demo3");

        System.out.println("初始集合:\n"+al);

        //演示获取指定位置元素
        String target=al.get(1);
        System.out.println("获取到的元素为:"+target);

        //演示向指定位置添加元素
        al.add(2,"demo_add");
        System.out.println("添加后的集合为:\n"+al);

        //演示移除指定位置的元素
        al.remove(3);
        System.out.println("进行移除操作后的集合为:\n"+al);

        //演示修改指定位置元素
        al.set(1, "demo_set");
        System.out.println("进行修改操作后的集合为:\n"+al);

        //演示获取指定元素索引
        int index=al.indexOf("demo_add");
        System.out.println("目标元素的索引为:"+index);

        //利用循环遍历的方式对集合元素进行取出
        for(int i=0;i<al.size();i++){            
            System.out.println("元素"+i+"为:"+al.get(i));
        }

程序运行结果:

初始集合:
[demo1, demo2, demo3]
获取到的元素为:demo2
添加后的集合为:
[demo1, demo2, demo_add, demo3]
进行移除操作后的集合为:
[demo1, demo2, demo_add]
进行修改操作后的集合为:
[demo1, demo_set, demo_add]
目标元素的索引为:2
元素0为:demo1
元素1为:demo_set
元素2为:demo_add

说明:以上程序使用ArrayList对集合List共性方法进行演示,其他List对象的使用方式与之类似

说明:由于list中元素有序,可以通过索引的方式获取List集合中的元素。因此list可以通过循环遍历的方式对元素进行取出,也可以通过迭代器的方式将元素进行取出,即list集合元素有两种取出方式。

2.ListIterator

使用场景

在用迭代器进行迭代操作时,不能通过集合对象的方法操作集合中的元素,否则会发生并发异常ConcurrentModificationException。因此,在迭代过程中只能使用迭代器的方法操作元素。考虑到iterator中的方法有限,List集合对象可以返回特有的迭代器ListIterator。该接口只能通过List集合的listIterator()方法获取。

ListIterator可以进行什么操作呢?

可以利用ListIterator在迭代过程中对元素进行添加或删除操作

常用方法

void add(E e)
将指定的元素插入列表。

boolean hasNext()
以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。

boolean hasPrevious()
如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。 (用于逆向遍历)

E next()
返回列表中的下一个元素。
int nextIndex()
返回对 next 的后续调用所返回元素的索引。

E previous()
返回列表中的前一个元素。
int previousIndex()
返回对 previous 的后续调用所返回元素的索引。

void remove()
从列表中移除由 next 或 previous 返回的最后一个元素

void set(E e)
用指定元素替换 next 或 previous 返回的最后一个元素

说明:迭代器在迭代过程中对元素进行的操作(比如添加和删除),迭代后也会影响到被操作集合中的元素。因为迭代器获得的是对集合的引用。

3.List集合具体对象特性

1.ArrayList

ArrayList底层数据结构使用的是数组结构,并且是线程不同步的。查询修改速度很快,但是增删较慢。初始容量为10,在添加的过程中会动态增加容量。

构造方法:

ArrayList()
构造一个初始容量为 10 的空列表。
ArrayList(Collection<? extends E> c)
构造一个包含指定 collection 的元素的列表,且这些元素是按照collection 的迭代器返回它们的顺序进行排列的。
ArrayList(int initialCapacity)
构造一个具有指定初始容量的空列表。

特有方法:

protected void removeRange(int fromIndex, int toIndex)
移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。

void trimToSize()
将此 ArrayList 实例的容量调整为列表的当前大小。

2.LinkedList

LinkedList底层数据结构使用的是链表结构,增删速度很快,查询稍慢。

构造方法:

LinkedList()
构造一个空列表。
LinkedList(Collection<? extends E> c)
构造一个包含指定 collection 中的元素的列表,这些元素按其 collection 的迭代器返 回的顺序进行排列。

特有方法:

void addLast(E e)
将指定元素添加到此列表的结尾。

Iterator<E> descendingIterator()
返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。

E element()
获取但不移除此列表的头(第一个元素)。

E getFirst()
返回此列表的第一个元素。如果集合中没有元素,会出现NoSuchElementException
E getLast()
返回此列表的最后一个元素。如果集合中没有元素,会出现NoSuchElementException

E removeFirst()
移除并返回此列表的第一个元素。如果集合中没有元素,会出现NoSuchElementException
E removeLast()
移除并返回此列表的最后一个元素。如果集合中没有元素,会出现NoSuchElementException

boolean removeFirstOccurrence(Object o)
从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)。

boolean removeLastOccurrence(Object o)
从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。

JDK1.6后出现的新方法:

boolean offer(E e)
将指定元素添加到此列表的末尾(最后一个元素)。
boolean offerFirst(E e)
在此列表的开头插入指定的元素。
boolean offerLast(E e)
在此列表末尾插入指定的元素。

E peek()
获取但不移除此列表的头(第一个元素)。
E peekFirst()
获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
E peekLast()
获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。

E poll()
获取并移除此列表的头(第一个元素)
E pollFirst()
获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
E pollLast()
获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。

E pop()
从此列表所表示的堆栈处弹出一个元素。

void push(E e)
将元素推入此列表所表示的堆栈。

3.Vector

Vector底层是数组数据结构,且是线程同步的

1.相关方法

构造方法:

Vector()
构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。
Vector(Collection<? extends E> c)
构造一个包含指定 collection 中的元素的向量,这些元素按其 collection 的迭代器返 回元素的顺序排列。
Vector(int initialCapacity)
使用指定的初始容量和等于零的容量增量构造一个空向量。
Vector(int initialCapacity, int capacityIncrement)
使用指定的初始容量和容量增量构造一个空的向量。

特有方法:

void addElement(E obj)
将指定的组件添加到此向量的末尾,将其大小增加 1。

int capacity()
返回此向量的当前容量。

void copyInto(Object[] anArray)
将此向量的组件复制到指定的数组中。

E elementAt(int index)
返回指定索引处的组件。

Enumeration<E> elements()
返回此向量的组件的枚举。

void ensureCapacity(int minCapacity)
增加此向量的容量(如有必要),以确保其至少能够保存最小容量参数指定的组件数。

E firstElement()
返回此向量的第一个组件(位于索引 0) 处的项)。

int indexOf(Object o, int index)
返回此向量中第一次出现的指定元素的索引,从 index 处正向搜索,如果未找到该元素,则返回 -1。

void insertElementAt(E obj, int index)
将指定对象作为此向量中的组件插入到指定的 index 处。

E lastElement()
返回此向量的最后一个组件。

int lastIndexOf(Object o, int index)
返回此向量中最后一次出现的指定元素的索引,从 index 处逆向搜索,如果未找到该元素,则返回 -1。

void removeAllElements()
从此向量中移除全部组件,并将其大小设置为零。

boolean removeElement(Object obj)
从此向量中移除变量的第一个(索引最小的)匹配项。

void removeElementAt(int index)
删除指定索引处的组件。

protected void removeRange(int fromIndex, int toIndex)
从此 List 中移除其索引位于 fromIndex(包括)与 toIndex(不包括)之间的所有元素。

void setElementAt(E obj, int index)
将此向量指定 index 处的组件设置为指定的对象。

void setSize(int newSize)
设置此向量的大小。
void trimToSize()
对此向量的容量进行微调,使其等于向量的当前大小。

2.Vector中的枚举Enumeration

Vector其特有的元素取出方式

相关方法:

boolean hasMoreElements()
测试此枚举是否包含更多的元素。

E nextElement()
如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。

示例代码:

        //部分代码
        Vector<String> v=new Vector<String>();
        //使用两种方法添加元素
        v.addElement("示例元素1");
        v.add("示例元素2");

        //使用枚举方式取出Vector中的元素
        Enumeration<String> enu=v.elements();
        while(enu.hasMoreElements()){
            System.out.println("使用枚举方式取出元素:"+enu.nextElement());
        }

程序运行结果:

使用枚举方式取出元素:示例元素1
使用枚举方式取出元素:示例元素2

说明:枚举的使用方式与迭代器类似,是较早的元素取用方式。随着JDK版本更,由于枚举接口的名称以及方法的名称都较长,现在已被迭代器取代。

4.List集合具体对象应用实例

1.LinkedList应用

场景概述

场景:使用LinkedList模拟一个堆栈和队列数据结构

堆栈:其中的元素具有先进后出的特点。即在进行添加操作时先进入队列的元素,在进行取出操作时后被取出来。

队列:其中的元素具有先进先出的特点。即在进行添加操作时先进入队列的元素,在进行取出操作时也先被取出来。

思路:将LinkedList进行个性化封装

用LinkedList实现栈

示例代码:

import java.util.LinkedList;

//自定义类,利用LinkedList实现堆栈
class MyStack<T>{   
    private LinkedList<T> linkedList;

    //栈的构造方法
    public MyStack(){
        linkedList=new LinkedList<T>();
    }

    //判断是否为空
    public boolean isEmpty(){
        return linkedList.isEmpty();
    }

    //添加元素
    public void ownAdd(T t){
        linkedList.add(t);
    }

    //获取元素
    public T ownGet(){
        return linkedList.removeLast();
    }
}

//测试类
public class StackDemo {

    public static void main(String[] args) {
        //新建自定义栈
        MyStack<String> ms=new MyStack<String>();
        //添加元素
        ms.ownAdd("示例元素1");
        ms.ownAdd("示例元素2");
        ms.ownAdd("示例元素3");
        //按照先进后出的顺序取出元素
        while(!ms.isEmpty()){
            System.out.println(ms.ownGet());
        }
    }

}

程序运行结果:

示例元素3
示例元素2
示例元素1

用LinkedList实现队列

示例代码:

import java.util.LinkedList;

//自定义类,借助LinkedList实现队列
class MyQueue<T>{
    private LinkedList<T> linkedList;

    //队列构造方法
    public MyQueue(){
        linkedList=new LinkedList<T>();
    }

    //判断队列是否为空
    public boolean isEmpty(){
        return linkedList.isEmpty();
    }

    //添加元素
    public void ownAdd(T t){
        linkedList.add(t);
    }

    //获取元素
    public T ownGet(){
        return linkedList.removeFirst();
    }
}

//测试类
public class QueueDemo {

    public static void main(String[] args) {
        //新建自定义队列
        MyQueue<String> mq=new MyQueue<String>();
        //添加元素
        mq.ownAdd("示例元素1");
        mq.ownAdd("示例元素2");
        mq.ownAdd("示例元素3");
        //按照先进先出的顺序取出元素
        while(!mq.isEmpty()){
            System.out.println(mq.ownGet());
        }
    }

}

程序运行结果:

示例元素1
示例元素2
示例元素3

为什么要封装?
我们希望将这些基本的容器封装为与我们的具体项目有关的特有容器,这样的封装就使得这些基本容器具有了特殊的含义,符合实际项目开发中的要求。

2.ArrayList示例

去除ArrayList中的重复元素

思路:从原容器中取出元素放入另一个新容器中,且每次加入时都与新容器中的元素进行一次判断,不重复的元素才进行加入

程序代码:

//本程序去除String元素为例
import java.util.ArrayList;
import java.util.ListIterator;

public class ArrayDeleteSame {

    //传入ArrayList对象,去除重复元素后返回
    public ArrayList<String> deleteSame(ArrayList<String> src){
        //建立装入唯一元素的集合
        ArrayList<String> target=new ArrayList<String>();

        for(int i=0;i<src.size();i++){
            String srcElement=src.get(i);
            //进行重复元素判断
            if(!target.contains(srcElement))
                target.add(srcElement);
        }
        return target;
    }

    public static void main(String[] args) {
        ArrayDeleteSame ads=new ArrayDeleteSame();
        //新建用于去除重复元素的ArrayList
        ArrayList<String> src=new ArrayList<String>();
        src.add("示例元素1");
        src.add("示例元素1");
        src.add("示例元素2");
        src.add("示例元素3");
        src.add("示例元素3");
        src=ads.deleteSame(src);

        //利用ListIterator迭代器对新集合的元素进行取出  
        for(ListIterator<String>lt=src.listIterator();
        lt.hasNext();){
            System.out.println(lt.next());
        }   
    }

}

程序运行结果:

示例元素1
示例元素2
示例元素3

将自定义对象作为元素存到ArrayList集合中,并去除重复元素

示例场景:向集合中存入Student对象。若Student对象同姓名同年龄,则视为同一个人,即为重复元素。

思路:
1.对Student描述,将数据封装后装入Student对象
2.定义容器,将Student对象加入容器
3.对元素进行取出

代码技巧:
1.在迭代器循环中用Student强制转化获得的集合元素
2.在Student对象中重写equals方法,此处可以规定为比较姓名和年龄。在该方法中用instanceof方法先对传入的对象进行判断,若传入对象不为Student对象则直接返回false。
3.结合去除重复String元素的方法,去除Student重复对象

示例代码:

import java.util.ArrayList;
import java.util.ListIterator;

//自定义Student类
class Student{
    String name;
    int age;

    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    //定义一个输出学生信息的方法
    public void output(){
        System.out.println("姓名:"+name+"------"+"年龄:"+age);
    }

    //重写Student对象进行比较的方法
    public boolean equals(Object obj){
        //如传入的元素不为Student对象,则直接返回false
        if(!(obj instanceof Student))
            return false;

        //将传入对象强转为Student对象
        Student s=(Student)obj;

        if(s.getAge()==this.age&&s.getName().equals(this.name))
            return true;
        else            
            return false;       
    }
}

public class StudentDeleteSame {

    //传入装有Student对象的ArrayList集合,去除重复元素后返回
    public ArrayList<Student> deleteSame(ArrayList<Student> src){

        //新建装入非重复元素的ArrayList对象
        ArrayList<Student> al=new ArrayList<Student>();

        ListIterator<Student> lt=src.listIterator();
        while(lt.hasNext()){
            //将取得的元素强转为Student对象
            Student s=(Student)lt.next();
            //进行非重复判断后加入新集合
            if(!al.contains(s))
                al.add(s);              
        }

        return al;
    }

    public static void main(String[] args) {
        StudentDeleteSame sds=new StudentDeleteSame();

        //新建装载Student对象的ArrayList集合对象
        ArrayList<Student> al=new ArrayList<Student>();
        al.add(new Student("bill",30));
        al.add(new Student("bill",30));
        al.add(new Student("KD",25));
        al.add(new Student("KD",25));
        al.add(new Student("KD",25));
        al.add(new Student("Pardon",12));

        //删除重复元素
        al=sds.deleteSame(al);

        System.out.println("去除重复元素后元素个数为:"+al.size());
        //对删除重复元素的集合进行元素取出
        ListIterator<Student> lt=al.listIterator();
        while(lt.hasNext()){
            Student s=(Student)lt.next();
            s.output();
        }
    }

}

程序运行结果:

去除重复元素后元素个数为:3
姓名:bill——年龄:30
姓名:KD——年龄:25
姓名:Pardon——年龄:12

结论:List集合判断元素是否相同[contains()方法],依据的是元素的equals()方法;包括remove(Object o)方法的元素比较部分调用的也是元素的equals()方法(先判断集合中有没有该元素,再进行删除操作)

注意:复写对象的equals方法时,注意该方法的参数为Object。


相关阅读:
菜鸟猿大战Java之集合框架系列(一)
菜鸟猿大战Java之集合框架系列(三)
菜鸟猿大战Java之集合框架系列(四)
菜鸟猿大战Java之集合框架系列(五)

Java基础知识之什么是集合框架 Java基础知识之什么是集合框架,Java基础知识之集合Collection概述,前面的文章,我们已经学习了Java的一些基础知识,比如泛型、注解等等内容,接着本博客继续学习Java中一个很常见的内容,集合。Java Collections 框架由接口和类组成,集合框架是用于存储数据和操作一组对象的统一架构 阅读详情

相关推荐

【图文步骤】EC-Engineer部分操作详细步骤

EC-Engineer部分功能详细使用手册

weixin_42212468的博客 6177

黑马程序员_JDk1.5新特性之_泛型

------- android培训、java培训、期待与您交流! ---------- 泛型是JDK1.5中引入的一个新特性(很重要),允许在定义类和接口的时候使用类型参数。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在JDK1.5中的新集合类框架中。 JDK1.5以前的集合类中存在什么问题  ArrayList collection = new ArrayList();

yybutter的专栏 1522

手把手教你用QEMU虚拟化华为路由器固件(附完整网络配置指南)

本文提供了一份详尽的QEMU虚拟化华为路由器固件的实战指南。从固件解包、网络桥接配置到QEMU虚拟机启动,手把手教你搭建完整的嵌入式设备沙箱环境,特别适合安全研究、逆向分析和学习嵌入式系统工作原理。

tgb3456789的博客 943

第十三章Collecction、泛型

一、Collection集合 1.1集合与数组的区别: 1.数组长度是固定的,集合的长度是可变的。 2.数组中存储的是同一种类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。 1.2Collection集合的常用功能 Collection是所有单列集合的父接口,双列集合在第十五章讲解MAP集合时会讲到。 public ...

GZW12345的博客 385

HLA分型

HLA分型 一、根据WES的tumor数据进行数据分型 选用hlahd 软件安装及使用 [root@18605fd8771e ~]# wget https://jaist.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.4.1/bowtie2-2.4.1-linux-x86_64.zip [root@18605fd8771e ~]# unzip bowtie2-2.4.1-linux-x86_64.zip && mv bowtie2-2.4.1

qq_23435961的博客 2491

基于Simulink的强化学习(DQN)自主调节占空比

摘要:本文介绍了一种基于Simulink的强化学习(DQN)方法,用于Buck变换器的自主占空比调节。通过建立马尔可夫决策过程模型,设计了包含状态、动作和奖励函数的强化学习框架,并在Simulink中实现了Buck主电路、RL接口模块和DQN智能体的集成。实验表明,相比传统PID控制,DQN方法在负载突变和输入跌落等复合扰动下表现出更好的鲁棒性,电压超调小于1%,恢复时间缩短至0.3ms。文章还详细讨论了关键设计技巧、工程挑战及对策,并提出了多目标优化、先进算法应用等扩展方向,为智能电源控制提供了新思路。

amy_mhd的博客 76

java 集合笔记_Java笔记---集合(List)

List(有序的集合)List使用一个数组来持有元素,可以在任意位置插入或删除元素,也可以通过索引访问任意位置的元素。List允许插入重复的元素,若List的实现支持null还可以插入多个null元素。为了方便在List中又重复声明了Collection中的接口List还定义了一个ListIterator的迭代器,支持双向访问、插入和修改元素,并可以从任意位置处开始迭代。List定义了两个查找指定...

weixin_36354744的博客 211

2026.3.21:Ubuntu26.04 apt换国内源 清华源 阿里源 中科大源 163源

作为 LTS 版本,它会有 5 年的常规维护和安全更新。如果订阅 Ubuntu Pro,还能享受额外7年的支持。也就是说, Ubuntu Pro将享有长达 12 年的系统更新保障!接下来,我们将重点介绍 Ubuntu 24.04 LTS 中那些值得关注的新特性,以方便你决定是否进行升级。Ubuntu 24.04 LTS,代号 「Noble Numbat」,即将与我们见面!Canonical 已经宣布, Ubuntu 24.04 LTS。源文件地址 已经更换为。

拥抱具身智能,昇腾Ascend C 9080

集合的简单理解总结

一  ArrayList ArrayList   每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。   常用方法     boolean add(E e)            将指定的元素添加到此列表的尾部。       void add(int index,

u011071492的专栏 699

宇树G1机器人遥控器音频控制实战

本文介绍了宇树G1人形机器人遥控器控制音频播放的核心实现方案。通过DDS消息订阅获取遥控器输入,采用非阻塞的subprocess调用aplay命令控制外接音响设备。系统支持播放、暂停和重播功能,采用50ms轮询间隔实现实时响应。关键点包括遥控器初始化、音频进程管理(Popen)、退出机制。文章还提供了设备配置指南、遥控器按键说明和常见问题解决方案。该方案从复杂音频播放器中提炼出核心控制逻辑,可作为机器人交互开发的参考模板。

m0_47999117的博客 543

RockChip Android14 修改LCD背光最大值

在调试LCD屏时时长会出现硬件不匹配,导致电流过大,屏幕发热严重。在不调整硬件的情况下,我们可以通过修改软件,降低LCD背光最大值来实现适配。我们都知道LCD屏背光是靠pwm来控制,一般来说最大值可以设置为255,针对上述问题,我们可以通过软件来降低该值,比如200,100等等。

qq_34968572的博客 631

集合框架笔记二

关于迭代器 Iterator(迭代器)是一个专门用于取出Collection集合中元素的接口,它以内部类的方式封装在Collection接口的实现类中,根据Collection接口各个实现类的数据结构不同,有着不同实现方式。而在Collection接口中定义取出Iterator对象的抽象方法。迭代器的出现统一了取出Collection集合元素的过程。Iterator接口中有hashNext()、...

QuestionsZhang的专栏 380

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【JavaSE系列】Java集合框架之Collection,Map接口

本篇文章带大家认识Java基础知识——集合框架,从本篇文章开始正式拉开数据结构的序幕,要深入了解一件事,那必然先得见个面,本文带大家认识Java集合框长什么样,以及怎么使用Collection和Map接口。

未见花闻的博客 1832

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java集合框架源码详解系列(一)

之前写过关于 C++ STL 的四篇文章,现在开始写一下关于Java集合框架的文章,该系列博客将会写很长时间。不管是C++的STL也好,Java的集合框架也好,这两者其实都是将一些基本的数据结构进行了封装实现,从现在开始博主将带领大家遨游在Java集合框架的源码世界,准备好了吗?Go!!!

晴空๓ 4307

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java集合系列详解

一,集合简介 Java中的集合可以分为四种体系: List:代表有序、重复的集合 Set:代表无序、不可重复的集合 Map:代表具有映射关系的集合 Queue:体系集合,代表一种队列集合实现 二,Java集合类的关系 Java中的集合类主要有两个接口派生:Collection和Map Collection类图如下: Map类图如下: 三,Collection接口 1,Set体系 Set是一种...

wang_yong_hui_1234的博客 5990

Java基础系列八 集合框架

集合概念 Iterable接口-Collection接口-List接口:LinkedList类、ArrayList类,Set接口:HashSet类、TreeSet类,Map接口:HashMap类、TreeMap类,Iterator接口 与 ListIterator接口

652

Java 集合框架 基础 总结 - lenyan

在 Java 编程中,集合框架是一个非常重要的部分,它提供了一组用于存储、操作和处理数据的类和接口。集合框架可以大大简化我们处理数据集合的工作,提高编程效率和代码质量。本文将对 Java 集合框架的基础内容进行总结,包括常见的集合类型、接口及其特点、常用方法等。Java 集合框架位于java.utilCollectionMap和Iterator。Collection是一个用来存储一组对象的接口,它有几个重要的子接口,如ListSet和Queue。Map则是用于存储键值对的数据结构。Iterator。

lenyan~的博客 1324

Java集合框架全面详解

集合框架是一个统一的架构,用于表示和操作集合,使集合能够独立于其实现细节进行操作。Java集合框架提供了一系列接口和类,用于存储、检索、操作和传输数据对象。尽管Java集合框架提供了丰富的实现,但有时您可能需要创建自定义的集合类。扩展现有集合类@Override@Override实现集合接口size = 0;@Override@Override@Override// 省略其他必要的方法实现...使用组合而非继承@Override。

qq_38830315的博客 2211

[ Java 基础系列 ]很详细很详细的 Java 集合框架教程!

新手引导 集合在我们日常开发使用的次数数不胜数,ArrayList/LinkedList/HashMap/HashSet······信手拈来,抬手就拿来用,在IDE上龙飞凤舞,但是作为一名合格的优雅的程序猿,仅仅了解怎么使用API是远远不够的,如果在调用API时,知道它内部发生了什么事情,就像开了透视外挂一样,洞穿一切,这种感觉才真的爽,而且这样就不是集合提供什么功能给我们使用,而是我们选择使用它的什么功能了。 集合框架总览 下图堪称集合框架的上帝视角,讲到集合框架不得不看的就是这幅图,当然,你会觉得眼花

欢迎来到「小菠萝」的博客 625

详解java集合框架

文章目录一、集合框架详解1、Collection接口1)collection接口2)AbstractCollection抽象类3)SortedSet接口4)AbstractList和AbstractSet5)继承基类List的类6)继承基类Set的类2、Map接口二、集合的意义和使用1、意义2、使用1)线程安全PK性能高效2)链表PK数组3)重复pk单一4)有序pk无序 一、集合框架详解 下图转载自: https://blog.youkuaiyun.com/weixin_43314519/article/details

m0_51801058的博客 2028

Java基础08-集合框架—单列集合

TreeSet集合存储自定义类型的对象时,必须指定排序规则,支持如下两种方式来指定比较规则。方式一:让自定义的类( 如学生类)实现Comparable接口,重写里面的compareTo方法来指定比较规则。方式二:通过调用TreeSet集合有参数构造器,可以设置Comparator对象( 比较器对象,用于指定比较规则。//学生类(通过实现 Comparable 接口来自定义规则)//重写compareTo方法实现安装规则排序@Override。

qq_57340195的博客 1008

Java集合框架解析

Java集合框架(Java Collections Framework, JCF)位于java.utilCollection:单列数据集合的根接口List:有序可重复集合Set:无序不可重复集合Queue:队列集合Map:双列键值对集合Iterator:集合遍历接口。

qq_45351273的博客 2058

Java基础系列文章-集合框架体系

坚持最初的梦想,年轻没有失败。

相信自己有能力,那么你就真的会有! 891

[Java基础] 集合框架

本文介绍了Java的集合框架,包括List、Set、Queue、Map和Deque接口,介绍了这些接口的实现,数据结构原理特性,并且介绍了最佳实践。同时也整理了一些常见的面试题。

MCC_MCC_MCC的博客 1315

Java基础(十九):集合框架

Set接口是Collection的子接口,Set接口相较于Collection接口没有提供额外的方法Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个 Set 集合中,则添加操作失败Set集合支持的遍历方式和Collection集合一样:foreach和IteratorSet的常用实现类有:HashSet、TreeSet、LinkedHashSetHashSet 是 Set 接口的主要实现类,大多数时候使用 Set 集合时都使用这个实现类。

从基础到源码解析的学习记录 2162
上一篇: Java基础之集合框架系列(一)
下一篇: Java基础之集合框架系列(三)
CodingEnding
博客等级 码龄11年 86粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值