之前学习了数组,可以创建引用类型数组,比如说通过创建几个学生对象求平均成绩。那如果其中一个学生的成绩搞错了,或者想多求几个学生的平均成绩,那怎么办呢?这时候就需要用到集合,首先来说一下集合是什么呢,集合是把具有相同性质的一类东西汇成一个整体。是不是有点抽象呢?俗话说就是存储同一类引用类型对象的容器。它不同于数组的是,它在你不知道有多少对象时集合大小可以一直改变,它还可以修改对象,删除对象等等。
集合的主要操作:
将对象添加到集合
从集合中修改对象
从集合中查找对象
从集合中删除对象
接下来介绍以下集合框架
Collection:集合的根接口,没有实现类,用于对子接口的对象引用。
List:Collection的子接口,元素有序,元素可重复。其中有几个实现类,着重讲ArrayList。
Set:Collection的子接口,元素无序,元素不可重复。有两个重要的实现类HushSet和TreeSet。
ArrayList:List接口的实现类,可以向其中添加对象,删除对象等操作。
/*
* ArrayList的常用操作
*/
ArrayList<String> arrayList=new ArrayList<>();
ArrayList arrayLis=new ArrayList();
arrayLis.add("abc");
arrayLis.add("xyz");//添加对象
int size=arrayLis.size();
System.out.println(size);//求集合大小
String string=(String)arrayLis.get(0);
System.out.println(string);//获取集合中第一个元素
boolean empty = arrayLis.isEmpty();
System.out.println(empty);//判断集合是否为空
arrayLis.remove(0);//删除集合中第一个元素
arrayLis.clear();//清空集合
HashSet:Set接口的实现类,操作同ArrayList差不多,但是HashSet没有get,remove操作,因为Set无序,所以就没有索引值。
TreeSet:Set接口的实现类。
/*
*TreeSet的常用方法
*/
TreeSet<String> treeSet=new TreeSet<>();
treeSet.add("123");
treeSet.add("234");
treeSet.add("345");
//treeSet.clear(); 清除集合中的元素
System.out.println(treeSet.first());//返回集合中的第一个元素
System.out.println(treeSet.last());//返回集合中的最后一个元素
System.out.println(treeSet.size());//求集合长度
System.out.println(treeSet.contains("123"));//判断集合中是否包含某元素
Iterator<String> iterator = treeSet.iterator();
同遍历数组一样,我们也可以遍历集合,这时你会想是不是可以像数组一样使用for循环呢?ArrayList有序,就有索引值可以使用for循环遍历,那HushSet和TreeSet没有索引值,该怎么办呢?这时就需要用到一个重要的方法iterator(迭代器)用来遍历容器中的元素,其中有两个重要的方法iterator.hasNext()判断容器中是否有元素,iterator.next()获取容器中元素。
/*
* ArrayList遍历集合 HashSet和TreeSet类似
*/
public class Test02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> arrayList=new ArrayList<>();
arrayList.add("Hello");//添加元素
arrayList.add("Word");
arrayList.add("!!!");
Iterator<String> iterator = arrayList.iterator();
while(iterator.hasNext()){ //判断容器里面是否有元素
String next = iterator.next();//获取元素
System.out.print(next+" ");
}
}
}
比如说遍历集合,要求按年龄大小打印,这个时候就只能使用TreeSet实现,因为它可以要求元素实现compareable接口,实现compareTo方法默认对元素进行自然排序。
上述集合实现类各有优缺点,没有绝对的完美,根据实际情况选择