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