1.1 Java集合的概述
Java的集合类是一种特别有用的工具类,就像一种容器,可以用来存储数量不等(可改变)的多个对象,并可以实现常用数据结构,如栈、队列等。Java的集合大致分为:Set、List和Map三种体系,jdk1.5后增加了Queue体系集合代表一种队列。
—— Set代表无序、不可重复的集合;类似一个罐子,里面是无序,注意的是不能有重复。
—— List代表有序、重复的集合;非常像一个数据,每个元素有自己的顺序,只是List长度可变
—— Map代表具有映射关系的集合;也类似一个罐子,但里面每个数据都由两部分组成。
jdk1.5之前,Java集合会丢失所有对象的数据类型,把所有对象都当成Object类型处理,jdk1.5后增加了泛型,可以记住容器中对象的数据类型
数组与Java集合的比较:在编程中,常常需要集中存放多个数据。
数组--我们可以用数组来存放,但数组长度一旦确定就不能变化,如果需要保存个数变化的数据,
数组无法做到;再有数组也无法保存具有映射关系的数据,如成绩表:高数-99,英语-100
Java集合--所以,为了保存数量不确定的数据,以及保存具有映射关系的数据,可以使用Java提供的
集合类来解决。
集合类和数组还不一样的是:数组保存的数据可以是基本类型的值,也可以是对象;而集合里只能保存对象。
Java的集合类主要由两个根接口派生:Collection和Map(用于保存有映射关系数据),这两个接口底下包含了一些子接口或实现类,接口是不能直接new自己来实例化的,所以使用集合类需要通过new对应的实现类来实例化。
1.2、基本使用
List接口的应用:(Set接口应用类似List接口)
实例化方式:如果用的是接口,必须是用实现类来实例化:Collection c = new ArrayList( ); List list = new ArrayList( );
add( )方法:每次添加一个数据元素,list.add("123");
remove( )方法:删除指定元素,list.remove("123");
size( )方法:取得集合里元素的个数,list.size( );
clear( )方法:删除所有元素,list.clear();
使用Iterator接口遍历集合元素(也可用foreach循环遍历,更便捷)
Iterator接口主要用于遍历Collection集合中的元素,也别称为迭代器。
-hasNext():如果被迭代的集合元素还没被遍历,则返回true
-next():返回集合里下一个元素
-remove():删除集合里上一次next方法返回的元素
例子:
//创建一个集合
Collection books = new ArrayList();//表示集合存放的是String类型数据
books.add("1");
books.add("2");
books.add("3");
//获取books集合的迭代器Iterator
Iterator it = books.iterator();
while(it.hasNext()){
//注意next方法返回的是Object类型,所以必须强制转型
String book = (String)it.next();
System.out.println(book);
}
//使用foreach循环遍历
for(String s : books){
System.out.println(s);
}
如果是使用List的话,List里的元素是有序的,所以List提供了get( )方法:可以直接通过索引遍历取得:
for(int i = 0; i
System.out.println(list.get(i));
}
Map接口的应用:
//通过HashMap实例化(HashTable是线程安全),表示key是整型value是字符串类型
HashMap hm = new HashMap();
//添加键值对key-value
hm.put(1,"A");
hm.put(2,"B");
//根据key取值
System.out.println(hm.get(1));
//根据key删除
hm.remove(1);
/*
for(Object key : hm.keySet()){
System.out.println(hm.get(key));
}
*/