首页 > 其他分享 >集合.ArrayList

集合.ArrayList

时间:2022-08-29 17:59:33浏览次数:43  
标签:name ArrayList System public age Student 集合 arrayList

【重点】

ArrayList:

  • 数组结构实现,查询快、增删慢

  • JDK1.2版本,运行效率快、线程不安全

源码分析:DEFAULT_CAPACITY = 10;默认容量

注意:如果没有向集合中添加任何元素时,容量0,添加一个元素之后 容量10

每次扩容大小是原来的1.5倍

elementDate存放元素的数组

size实际元素个数

add();添加元素

//源码
public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; } private void ensureCapacityInternal(int minCapacity) { ensureExplicitCapacity(calculateCapacity(elementData, minCapacity)); } private void ensureExplicitCapacity(int minCapacity) { modCount++; // overflow-conscious code if (minCapacity - elementData.length > 0) grow(minCapacity); } private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity < 0) newCapacity = minCapacity; if (newCapacity - MAX_ARRAY_SIZE > 0) newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); }
package jihe;

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

/**
 * ArrayList的使用
 * 存储结构:数组,查找遍历速度快,增删慢
 */
public class Demo05 {
    public static void main(String[] args) {
        //创建集合
        ArrayList arrayList = new ArrayList<>();
        //1.添加元素
        Student s1 = new Student("小A",20);
        Student s2 = new Student("小B",22);
        Student s3 = new Student("小C",24);
        arrayList.add(s1);
        arrayList.add(s2);
        arrayList.add(s3);
        System.out.println("元素个数:"+arrayList.size());
        System.out.println(arrayList.toString());
        //2.删除元素
        //arrayList.remove(new Student("小A",20));
        //System.out.println("删除之后:"+arrayList.size());

        //3.遍历元素[重点]
        //3.1使用迭代器
        System.out.println("-------3.1使用迭代器--------");
        Iterator it = arrayList.iterator();
        while (it.hasNext()){
            Student s = (Student)it.next();
            System.out.println(s.toString());
        }
        //3.2使用列表迭代器
        System.out.println("-------3.2使用列表迭代器--------");
        ListIterator lit = arrayList.listIterator();
        while (lit.hasNext()){
            Student s = (Student)lit.next();
            System.out.println(s.toString());
        }
        System.out.println("-------3.2使用列表迭代器逆序--------");
        while (lit.hasPrevious()){
            Student s = (Student)lit.previous();
            System.out.println(s.toString());
        }
        //4.判断
        System.out.println(arrayList.contains(new Student("小A",20)));
        System.out.println(arrayList.isEmpty());
        //5.查找
        System.out.println(arrayList.indexOf(new Student("小A",20)));
    }
}
package jihe;

import java.util.Objects;

public class Student {
    private String name;
    private int age;

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

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';

    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

 

搜索

复制

标签:name,ArrayList,System,public,age,Student,集合,arrayList
From: https://www.cnblogs.com/sususyq-/p/16636776.html

相关文章

  • 集合.Vector
    packagejihe;importjava.util.Enumeration;importjava.util.Vector;/***演示Vector集合的使用*存储结构:数组*/publicclassDemo06{publicstatic......
  • Java集合
    概述数组和集合的元素存储的个数问题数组定义后类型确定,长度固定集合类型可以不固定,大小是可变的数组和集合存储元素的类型问题基本类型和引用类型的数据数组都......
  • List集合拆分为多个List
    publicstatic<T>List<List<T>>split(List<T>resList,intsubListLength){if(CollectionUtils.isEmpty(resList)||subListLength<=0){......
  • Java List集合返回值去掉中括号('[ ]')的操作
    调用StringUtils工具类的strip()方法去掉中括号"[]": 或者自己写工具类publicstaticvoidmain(String[]args){Strings="[aasa,bbbbb]";Strings......
  • 字典、集合、元组、列表区别
    是否有序无序列表:字典、集合、元组有序列表:列表是否是可变序列定长:元组、集合可变:列表、字典是否可更改不可更改:元组(不可以修改元素地址,但是可以修改......
  • 1.1 集合的含义与表示
    \({\color{Red}{欢迎到学科网下载资料学习}}\)【基础过关系列】2022-2023学年高一数学上学期同步知识点剖析精品讲义(人教A版2019)\({\color{Red}{跟贵哥学数学,so\quad......
  • leetcode刷题记录之25(集合实现)
    题目描述:给你链表的头节点head,每 k 个节点一组进行翻转,请你返回修改后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将......
  • 利用Java集合实现学生信息的”增删查“
    之前学了Java中的集合,打算写一个小程序来消化一下!那么我们知道,集合相比数组的优点就是可以动态的增加元素,这对比数组来说,十分的便捷;并且集合为我们封装好一些方法,可以更......
  • Java集合
    集合框架组成部分:1.Collection(存放单列数据):List接口存放数据可以允许重复ArrayList底层基于数组数据结构实现LinkedList底层基于链表数据结构实现Set接口不允许存......
  • Drf视图集合
    1.背景:    技术储备,drf适合前后端分离项目,比较适合单表操作的业务,另外丰富的视图集合配合路由自动生成,开发速度能得到极大的提升。 2、视图分类:   ......