集合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接口!!!