package cn.test.list;
import java.util.ArrayList;
/*
* 集合的体系:
* -------|Collection 单例集合的根接口
* ----------| List 如果实现了List接口的集合类, 有序 可重复
* --------------| ArrayList ArrayList底层维护一个一个Object数组实现的,特点:查询速度快,增删慢
* ------有数组角标查找快,数组不够判断还要拷贝增删慢
*
* 什么时候使用ArrayList:如果目前数据查询比较多,增删比较少,那么使用ArrayList 存储这批数据。 比如:学校图书馆
*
* --------------| LinkedList
* --------------| Vector 了解即可
*
* ----------| Set 如果实现了Set接口的集合类, 无序 不可重复
*
* ArrayList特有的方法:
* ensureCapacity(int minCapacity) //指定最小容量,一般不用。构造函数有个带参的可以指定大小
*
* trimToSize() // 将此 ArrayList 实例的容量调整为列表的当前大小,删除多余的容量。一般不用,以后再加的话会要拷贝比较不方便
*
* 笔试题目: 使用ArrayList无参的构造函数创建一个对象时,默认的容量是多少?如果长度不够时又自动增长多少?
* ArrayList底层是维护了一个Object数组实现的,使用无参的构造函数时,Object数组默认的容量是10,当长度不够时,自动增长原来长度的0.5倍
*
*
*/
public class Demo7 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
}
}
package cn.itcast.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;
}
}