集合Collection
1、概诉
集合主要是一些容器,是用来存储数据的。Collection接口是集合中的根层次的接口,其子类主要有Set和List接口,其中Set接口的主要实现类有HashSet和TreeSet,List接口的实现类主要有ArrayList和LinkedList。如下图。
2、Collection集合
主要方法有:
add(E e):往集合中添加元素
remove(Object o):将指定元素对象从集合中删除
isEmpty():返回boolean值,用于判断当前集合是否为空
iterator():返回在此Collection的元素上进行迭代的迭代器,用于遍历集合中的对象
size():返回int值,获取该集合中元素的个数
3、List集合
List集合中的元素允许重复,各个元素的顺序就是插入顺序。类似java数组,用户可以利用索引来访问集合中的元素
主要方法:
get(int index):获取指定索引位置的元素
set(int index,Object):将集合指定索引位置的元素对象改为指定的对象
1、Lsit接口的实现类
public class ListTest002 {
public static void main(String[] args) {
//利用ArrayList创建list对象
//ArrayList集合是线性存储元素
//LinkedList集合是链表存储元素
List<Integer> list=new ArrayList<>();
//往list集合添加元素
list.add(1);
list.add(2);
list.add(2);
list.add(3);
//创建随机数(0-length-1
int i=(int)(Math.random()*list.size());
//打印递i个元素
System.out.println("随机获取数组中的元素:"+list.get(i));
// list.set(2, 3);
//将指定索引位置的元素去除
list.remove(2);
//遍历循环输出集合元素
for(int j=0;j<list.size();j++){
System.out.println(list.get(j));
}
}
}
运行结果:
4、Set集合
Set集合中的对象不按照特定的方式排序,只是简单的把对象加入集合中,但是Set集合中不允许有重复的对象。
主要方法:
first():返回Set中当前第一个元素
last():返回Set中当前最后一个元素
comparator():返回对此Set中的元素进行排序的比较器。如果此Set使用自然顺序,则返回null
headSet(E toElement):返回一个新的Set集合,新集合是toElement(不包括)之前的所有对象
subSet(E fromElement,E endElement):返回一个新的集合,是fromElement(包括)与endElement(不包括)之间的全部对象
tailSet(E fromElement):返回一个新的集合,新集合包含对象fromElement(包括)之后的所有对象
public class SetTest003 {
public static void main(String[] args) {
//创建Student对象
Student student1=new Student("张三");
Student student2=new Student("李四");
Student student3=new Student("王五");
Student student4=new Student("赵六");
Student student5=new Student("赵六",4);
//创建TreeSet集合
TreeSet treeSet=new TreeSet<>();
//往TreeSet集合中添加元素
treeSet.add(student1);
treeSet.add(student5);
treeSet.add(student2);
treeSet.add(student3);
treeSet.add(student4);
//获取TreeSet中的迭代器
Iterator<Student> iterator=treeSet.iterator();
//遍历迭代器
while (iterator.hasNext()) {
//如果有下一个就将下一个强转为指定的类型
Student s = (Student) iterator.next();
//输出
System.out.println(s);
}
//获取student3(不包括)之前的集合元素的迭代器
iterator=treeSet.headSet(student3).iterator();
System.out.println("截取前面部分的集合");
while (iterator.hasNext()) {
Student student = (Student) iterator.next();
System.out.println(student);
}
//获取中间元素(student3包括,student1不包括)的迭代器,要保证是递增
iterator=treeSet.subSet(student3, student1).iterator();
System.out.println("截取student1和student3之间的集合");
while (iterator.hasNext()) {
Student student = (Student) iterator.next();
System.out.println(student);
}
}
}
class Student implements Comparable<Object>{
private String name;
private int id;
public static int init=001;
public Student() {
super();
}
public Student(String name) {
super();
this.name = name;
this.id = init++;
}
public Student(String name, int id) {
super();
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Student [name=" + name + ", id=" + id + "]";
}
/**
* 设置对象顺序
*/
@Override
public int compareTo(Object o) {
Student s=(Student)o;
if (this.getId()>s.getId()) {
return -1;
}else if (this.getId()<s.getId()) {
return 1;
}else {
return 0;
}
}
}
运行截图:
注意:在利用TreeSet的时候要实现Comparable接口!!!