1.Collection接口
1.COllection接口
a.COllection是整个集合之中单值保存的最大父接口;
public interface Collection<E> extends Iterable<E>
2.常用的方法
add();向集合中保存数据;
addAll();追加一个集合;
clear();清空集合;
contains(Object object);判断是否包含指定的内容,需要有equals()方法的支持;
isEmpty():判断是否是空集合
remove(Object object):删除对象;
size()取得集合中保存的元素的个数;
toArray()将集合变为对象数组保存
iterator()为Iterator对象实例化
其中add()和iterator()是用的机率是最高的;
contains(object)和remove(obj)需要equals()方法的支持;
2.List
1.存储一组有序(可以通过索引访问)的,可重复的数据,对Collection接口做了大量的扩充;
2.public interface List<E> extends Collection<E>{}
3.重要方法:
E get(int index)取得索引编号内容
E set(int index,E element)修改指定编号的内容
ListIterator<E> listIterator()为ListIterator接口实例化
4.List本身是接口,操作List接口,需要对应的子类(实现类);
5.可以使用ArrayList,Vector,LinkedList子类实例化,其中ArrayList最为常用在实际开发中;
2.1 ArrayList
class Book{
private String name;
private Double price;
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price=price;
}
public Book() {
super();
}
public Book(String name, Double price) {
super();
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "book [name=" + name + ", price=" + price + "]";
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Book other = (Book) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (price == null) {
if (other.price != null)
return false;
} else if (!price.equals(other.price))
return false;
return true;
}
}
public class TestArrayList {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
System.out.println("长度为: "+list.size()+" 是否为空: "+list.isEmpty());
list.add("hello");
list.add("hello");
list.add(1, "world");
System.out.println("长度为: "+list.size()+" 是否为空: "+list.isEmpty());
/**
* 输出
* 1.Collection接口提供了size()获取集合的长度;
* 2.List接口扩充了get(index)根据索引获取数据;
*/
for (int i = 0; i < list.size(); i++) {
String str=list.get(i);
System.out.println(str);
}
//任何情况下,集合数据的删除和内容的查询都需要equals()的支持需要覆写equals();
List<Book> book=new ArrayList<Book>();
book.add(new Book("java基础", 100.0));
book.add(new Book("java Jvm",30d));
book.add(new Book("java基础", 100.0));
book.remove(new Book("java基础", 100.0));
for (int i = 0; i < book.size(); i++) {
System.out.println(book.get(i));
//没有重写equals()
/* book [name=java基础, price=100.0]
book [name=java Jvm, price=30.0]
book [name=java基础, price=100.0]*/
}
boolean contains = book.contains(new Book("java基础", 100.0));
System.out.println(contains);//false 在没有重写equsls()
}
}
2.2 Vector
List<String> list=new ArrayList<String>();
System.out.println("长度为: "+list.size()+" 是否为空: "+list.isEmpty());
list.add("hello");
list.add("hello");
list.add(1, "world");
System.out.println("长度为: "+list.size()+" 是否为空: "+list.isEmpty());
ArrayList和Vector的区别
ArrayList和vector的区别
1.时间: ArrayList jdk1.2推出;
Vector jdk1.0推出;
2.性能: ArrayList 异步处理;
Vector 同步处理 ;
3.数据安全 ArrayList 线程不安全;
Vector 线程安全
4.输出 ArrayList Iterator、ListIterator,forech
vector Iterator、ListIterator,forech,Enumeration
2.3 LinkList
/**
* public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable{}
特点:
a.底层使用链表数据结构
b.添加和删除速度快,查找修改慢;
*/
List list=new LinkedList<String>();
list.add("我是第一个元素");
list.add("我是第二个元素");
list.add("我是第三个元素");
//使用for循环
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//使用foreach
for (Object object : list) {
System.out.println(object);
}
//使用迭代
Iterator<String> iterator=list.iterator();
while(iterator.hasNext()){
String next = iterator.next();
System.out.println(next);
}
总结
总结:
a.List中的数据保存顺序就是数据添加的顺序;
b.List集合中可以保存重复的元素;
c.List子接口比Collection接口扩充了一个get();
d.List子类大部分使用ArrayList;