Java 集合类学习之ArrayList

1、ArrayList的常用方法和原理

package com.fish.list;
import java.util.ArrayList;

/*
集合的体系:
----------| Collection 单列集合的根接口
----------------| List 如果实现了List接口的集合类,具备的特点:有序,可重复。
--------------------| ArrayList  ArrayList底层是维护了一个Object数组实现的,特点:查询速度快,增删慢。

什么时候使用ArrayList: 如果目前的数据是查询比较多,增删比较少的时候,那么就使用ArrayList存储这批数据。比如:高校的图书馆
如果数据总是大量的增加,最好不要使用ArrayList,因为ArrayList的增加和删除都要copy大量的元素,或者生成新的大容量数组,比较耗性能

--------------------| LinkedList
--------------------| Vector(了解即可)
----------------| Set 如果实现了Set接口的集合类, 具备的特点:无序,不可重复。

ArrayList 特有的方法:
ensureCapacity(int minCapacity) 这个方法一般不用,如果要要指定ArrayList默认值,一般用ArrayList(int initialCapacity) 构造方法
trimToSize()  这个方法也不常用

笔试题目: 使用ArrayList无参的构造函数创建一个对象时, 默认的容量是多少? 如果长度不够使用时又自增增长多少?
ArrayList底层是维护了一个Object数组实现的,使用无参构造函数时,Object数组默认的容量是10,当长度不够时,自动增长0.5倍。

*/
 
 
public class Demo6 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
    }
}
package com.fish.list;
import java.util.ArrayList;
import java.util.Iterator;
/*
*/
class Book{
    int id;
    String name;// 名字
    
    public Book(int id, String name) {
        this.id = id;
        this.name = name;
    }
    
    @Override
    public String toString() {
        return "{ 书号:"+ this.id+" 书名:"+ this.name+" }";
    }
    
    @Override
    public boolean equals(Object obj) {
        Book book =(Book)obj;
        return this.id==book.id;
    }
    
}
    // 需求: 编写一个函数清除集合中重复元素。如果书号是一样就视为重复元素。要求:遍历集合元素的时候必须使用迭代器。 get 迭代器
    public class Demo7 {
    public static void main(String[] args) {
        ArrayList list=  new ArrayList();
        list.add(new Book(110,"java编程思想"));
        list.add(new Book(220,"java核心技术"));
        list.add(new Book(330,"深入javaweb"));
        list.add(new Book(110,"javas神书"));
        ArrayList list2 = clearRepeat(list);
        System.out.println("新集合的元素是:"+ list2);
    }
    
    public static ArrayList  clearRepeat(ArrayList list){
    //创建一个新的集合
          ArrayList newList = new ArrayList();
        //获取迭代器
        Iterator it = list.iterator();
        while(it.hasNext()){
            Book book = (Book) it.next();  //从旧集合中获取的元素
            
            if(!newList.contains(book)){
                //如果新集合没有包含该书籍,那么就存储到新集合中
                newList.add(book);
            }
        }
        return newList;
    }
}
时间: 2024-10-02 23:11:11

Java 集合类学习之ArrayList的相关文章

集合类学习之Arraylist 源码分析

1.概述 ArrayList是List接口的可变数组的实现.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小. 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小.它总是至少等于列表的大小(如果不指定capacity,默认是10).    /**      * Constructs an empty list with an initial capacity of ten.

Java 集合类学习之Vector

package com.fish.list; import java.util.Enumeration; import java.util.Vector; /* 集合 的体系: ------------| Collection 单例集合的根接口 ----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复.  -------------------| ArrayList  ArrayList 底层是维护了一个Object数组实现的. 特点:查询速度快

Java 集合类学习之HashSet

package com.fish.set; import java.util.HashSet; import java.util.Set; /* 集合 的体系: ------------| Collection 单例集合的根接口 ----------------| List  如果是实现了List接口的集合类,具备的特点: 有序,可重复.  -------------------| ArrayList  ArrayList 底层是维护了一个Object数组实现的. 特点: 查询速度快,增删慢.

Java 集合类学习之LinkedList

1.linkedList的方法和原理 package com.fish.list; import java.util.Iterator; import java.util.LinkedList; /* 集合的体系: ----------| Collection  单列集合的根接口 ----------------| List 如果实现了List接口的集合类,具备的特点: 有序,可重复. --------------------| ArrayList   ArrayList 底层是维护了一个Obj

Java 集合类学习之Map

package com.fish.map; import java.util.HashMap; import java.util.Map; /* 在现实生活中有些数据是以映射关系存在的,也就是成对存在的,比如:  民政局 : 键         值 老公        老婆 ***      人 一把要锁     锁 双列集合: -------------| Map  如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复. ----------

Java集合类学习总结

Java的集合类分为两个类型,Collection和Map,Collection又分为Set和List. 1. 集合类中元素是否相同 HashSet使用equals和HashCode两个函数共同决定 TreeSet使用comparable接口中的compareTo,或者comparator中的compare函数 ArrayList使用equals函数 HashMap中的key和HashSet相同,value使用equals函数 TreeMap中的key和TreeSet相同,value使用equa

Java 集合类学习之HashMap

package com.fish.map; import java.util.HashMap; /* 双列集合: -------------| Map  如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复. ----------------| HashMap  底层也是基于哈希表实现 的. HashMap的存储原理: 往HashMap添加元素的时候,首先会调用键的hashCode方法得到元素 的哈希码值,然后经过运算就可以算出该 元素在哈希表

Java集合类学习记录

被标记为transient的属性在对象被序列化的时候不会被保存int[] arr1 = {1, 2, 3, 4, 5}; int[] arr2 = Arrays.copyOf(arr1, new_length);//Arrays是数组的工具类//ArrayList的转化为静态数组的toArray方法就是这个原理//ArrayList的扩容原理也是Arrays.copyOf()方法//新建了一个数组定义一个数组int[] a={3,1,4,2,5}; int[] b=a; 数组b只是对数组a的又一

Java集合类学习笔记

前言:下载Java的API,需要使用接口时,可在API中进行查询. 1.collection接口:可理解为一个动态的对象数组,不同的是集合中对象的内容可以任意扩充. 特点:性能高:易扩展和修改. 常用子类接口:List.Set.Queue. 2.List接口有ArrayList.vector子类,两者的使用方法相同,不同的是ArrayList是异步处理方式,性能高,但是非线程安全:vector同步处理方式,性能低,但是线程安全.在不要求线程安全的时候采用ArrayList子类. 使用实例: pa