---------------------- android开发、java培训、期待与您交流! ----------------------
黑马程序员-有关List集合的总结
Java.util包中提供了一些集合类,这些集合类又被称为容器。提到容器就能联想到数组,集合类与数组之间的不同之处在于,数组的长度是固定的,集合的长度是可变的,数组用于存放基本类型的数据,集合用来存放对象的引用。常见的集合有List集合、Set集合、Map集合,其中List集合与Set集合继承了Collection接口,各接口还提供了不同的实现类。
Collection接口是层次结构中的根接口。构成Colloection接口通常不能直接使用,但接口提供了添加元素、删除元素、管理数据的方法。由于List接口与Set接口都继承了Collection接口,因此这些方法对List集合与Set集合是通用的。
List集合包括List接口以及List接口的所有实现类。List集合中的元素允许重复,个元素的顺序就是对象插入的顺序。类似Java数组,用户可以通过使用索引来访问集合中的元素。
有关List集合的代码笔记:
/*
存入TreeSet类实现的Set集合必须实现Comparable接口,该接口中的
compareTo(Object o)方法比较此对象的顺序,如果该对象小于、等于
或者大于指定的对象,则分别返回整数、0或者正整数。
*/
import java.util.*;
class UpdateStu implements Comparable<Object>
{
String name;
long id;
public UpdateStu(String name, long id) //构造方法
{
this.id = id;
this.name = name;
}
public int compareTo(Object o) //覆盖父类中的compareTo方法
{
UpdateStu upstu = (UpdateStu) o;
int result = id > upstu.id ? 1 : (id == upstu.id ? 0 : -1);
return result;
}
public long getId() //构造获取ID方法
{
return id;
}
public void setId(long id) //构造设置ID方法
{
this.id = id;
}
public String getName() //构造获取name方法
{
return name;
}
public void setName(String name) //构造设置name方法
{
this.name = name;
}
public static void main(String[] args)
{
UpdateStu stu1 = new UpdateStu("李同学", 01011);//创建UpdateStu对象
UpdateStu stu2 = new UpdateStu("陈同学", 01021);
UpdateStu stu3 = new UpdateStu("王同学", 01051);
UpdateStu stu4 = new UpdateStu("马同学", 01012);
TreeSet<UpdateStu> tree = new TreeSet<>();
tree.add(stu1);
tree.add(stu2);
tree.add(stu3);
tree.add(stu4);
Iterator<UpdateStu> it = tree.iterator();//Set集合中的所有对象的迭代器
System.out.println("Set集合中的所有元素:");
while (it.hasNext()) //遍历集合
{
UpdateStu stu = (UpdateStu) it.next();
System.out.println(stu.getId() + " " + stu.getName());
}
it = tree.headSet(stu2).iterator();//截取排在stu2与stu3之间的对象
System.out.println("截取前面部分的集合:");
while (it.hasNext()) //遍历集合
{
UpdateStu stu = (UpdateStu) it.next();
System.out.println(stu.getId() + " " + stu.getName());
}
it = tree.subSet(stu2, stu3).iterator();
System.out.println("截取中间部分的集合");
while (it.hasNext())
{
UpdateStu stu = (UpdateStu) it.next();
System.out.println(stu.getId() + " " + stu.getName());
}
}
}
下边是课件上的例题实现程序:
/*
Collection
Lise:元素是有序的
set:元素是无序的
*/
import java.util.*;
class ListDemo
{
public static void main(String[] args)
{
ArrayList al=new ArrayList();//建立数组列表,ArrayList实现了可变数组,允许保存所有元素
al.add("java01");//向集合添加元素
al.add("java02");
al.add("java03");
sop(al);
ListIterator li=al.listIterator();//调用迭代器
sop("hasPrevious():"+li.hasNext());
sop("hasPrevious():"+li.hasPrevious());
while(li.hasNext())
{
Object obj=li.next();
if(obj.equals("java02"))
li.add("java000009");
}
sop("hasPrevious():"+li.hasNext());
sop("hasPrevious():"+li.hasPrevious());
sop(al);
/* Iterator it=al.iterator();//迭代器
while(it.hasNext())
{
Object obj=it.next();
if(obj.equals("java02"))
//al.add("java000009");
it.remove();
sop("obj="+obj);
}
sop(al);
*/
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
ArrayList类实现了可变的数组,允许保存所有元素,包括NULL,并且可以根据索引位置对集合进行快速的随机访问,缺点是向指定的索引位置插入对象或者删除对象的速度较慢。
---------------------- android开发、java培训、期待与您交流! ----------------------