集合 的体系:
------------| Collection 单例集合的根接口
----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。
-------------------| ArrayList ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。
-------------------| LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。
-------------------| Vector(了解即可) 底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。
----------------| Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。
-------------------| HashSet 底层是使用了哈希表来支持的,特点: 存取速度快.
-------------------| TreeSet 如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。
ArrayList 特有的方法:
ensureCapacity(int minCapacity)
trimToSize()
笔试题目: 使用ArrayList无参的构造函数创建一个 对象时, 默认的容量是多少? 如果长度不够使用时又自增增长多少?
运行结果:
新集合的元素是:[{ 书号:110 书名:java编程思想 }, { 书号:220 书名:java核心技术 }, { 书号:330 书名:深入javaweb }]
------------| Collection 单例集合的根接口
----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。
-------------------| ArrayList ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。
-------------------| LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。
-------------------| Vector(了解即可) 底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。
----------------| Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。
-------------------| HashSet 底层是使用了哈希表来支持的,特点: 存取速度快.
-------------------| TreeSet 如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。
ArrayList 特有的方法:
ensureCapacity(int minCapacity)
trimToSize()
笔试题目: 使用ArrayList无参的构造函数创建一个 对象时, 默认的容量是多少? 如果长度不够使用时又自增增长多少?
ArrayList底层是维护了一个Object数组实现 的,使用无参构造函数时,Object数组默认的容量是10,当长度不够时,自动增长0.5倍。
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;
}
}
运行结果:
新集合的元素是:[{ 书号:110 书名:java编程思想 }, { 书号:220 书名:java核心技术 }, { 书号:330 书名:深入javaweb }]