一.大纲
* 集合:
* Collection List:有序可以重复
* ArrayList
* LinkedList
* Vector
* Set:无序不可以重复
* HashSet
* TreeSet
* Map :地图 k--value
* Iteratoor:迭代器
二.Collection集合接口方法
collection接口定义的方法
int size(); 集合中元素的个数
boolean isEmpty(); 判断集合中是否有元素 没有 true
boolean contains(Object o); 是否包含元素o 包含 true
Object[] toArray(); 把集合转换成数组
boolean add(E e); 是否添加成功【添加元素】
boolean remove(Object o); 移出元素o
boolean containsAll(Collection<?> c); 是否包含c集合
boolean addAll(Collection<? extends E> c); 添加一个集合
boolean removeAll(Collection<?> c); 移出集合
boolean retainAll(Collection<?> c); 保留该集合和c集合的交集
void clear(); 清除所有
boolean equals(Object o); 相等
三.ArrayList具体实现
1.方法大纲
ArrayList:
1.添加
2.remove clear(移除和清除)
3.set(设置)
4.get for iterator
练习
1.list集合中添加10个对象User[name,pwd]
2.获取第3个对象
3.移除指定的对象
4.查找是否有指定的对象
5.遍历
2.ArrayList的测试
***ArrayList底层是Object数组实现
LinkedList:底层是链表实现的
Vector:底层数组实现*
public static void main(String[] args) {
//集合对象
ArrayList list = new ArrayList();
ArrayList list2 = new ArrayList();
list2.add("abc");
list2.add("新插入的");
//添加元素
list.add(12);//数值
list.add('嗯');
list.add(new Date());
list.add(1, "新插入的");
//list.addAll(list);
list.addAll(1, list);
//判断是否包含
/*boolean flag = list.contains(12);
System.out.println(flag);*/
//是否包含一个集合
/*flag = list.containsAll(list2);
System.out.println(flag);*/
list.set(0, "修改");
//保留2个集合的交集
//list.retainAll(list2);
//Object o = list.remove(0);
//清除所有
//list.clear();
//获取指定位置的元素
//System.out.println(list.get(0));
//获取集合中元素的个数
//System.out.println(list.size());
//获取每一个元素
/*for(int i = 0;i<list.size();i++){
System.out.println(list.get(i));
}*/
//迭代器
Iterator it = list.iterator();
while(it.hasNext()){//如果存在下一个元素
//获取下一个元素
Object obj = it.next();
System.out.println(obj);
}
Object [] objarr = list.toArray();
//截取子字符串
List l = list.subList(1, 3);
/*System.out.println("=================");
for (Iterator iterator = l.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
System.out.println(object);
}*/
}
}
上面的练习:
User类
package day13;
public class User {
private String name;
private String password;
public User(){}
public User(String name,String password){
this.name=name;
this.password=password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.name+" "+this.password;
}
/**
* 此处需要重写equals
*/
public boolean equals(Object obj)
{
if(obj==null)
return false;
if(obj instanceof User)
{
User user=(User)obj;
if(this.name.equals(user.name)&&this.password.equals(user.password))
{
return true;
}
}
return true;
}
}
测试类
package day13;
/**
* 1.list集合中添加10个对象User[name,pwd]
2.获取第3个对象
3.移除指定的对象
4.查找是否有指定的对象
5.遍历
*/
import java.util.ArrayList;
import java.util.Iterator;
public class List_Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<User> list1=new ArrayList<User>();
list1.add(new User("张三","1111"));
list1.add(new User("李四","2222"));
list1.add(new User("王五","3333"));
list1.add(new User("麻子","4444"));
System.out.println(list1.get(3).toString());//查看指定位置的对象,获取第三个对象
list1.remove(2);//移除指定对象
System.out.println(list1);
boolean flag = list1.remove(new User("张一","1"));
System.out.println(flag);
System.out.println((list1.contains(new User("王五","3333"))));//查找是否有指定对象
Iterator<User> aIterator=list1.iterator();//创建list1的迭代器
while(aIterator.hasNext())//遍历
{
System.out.println(aIterator.next());
}
}
}
结果:(如果此处不重写equals方法,则不能实现删除指定的数据,原因是contains等底层都是使用的数组)
麻子 4444
[张三 1111, 李四 2222, 麻子 4444]
true
true
李四 2222
麻子 4444
3.LinkerList