集合类又被成为容器。集合的长度是可变的,存放的是对象的引用。继承体系如下。
Collection接口
他是层次结构中的根接口
Collection接口的常用方法:
add(E e):将指定对象添加到该集合中
remove(Object object):将指定对象从该集合中移除
isEmpty():返回boolean值,判断当前集合是否为空
iterator():迭代器,用于集合中的遍历
size():返回int值,获取该集合中元素的个数
通过迭代器遍历集合
Collection <String>list=new ArrayList<String>();//实例化集合类对象
list.add("a");//集合中添加数据
list.add("b");
list.add("c");
Iterator <String>it=list.iterator();//创建迭代器
while(it.hasNext()){ //判断是否有下一个元素
String str=(String)it.next(); //获取元素
System.out.println(str);
}
注:Iterator的next()方法返回的是Object
List集合
List集合中的元素允许重复,元素的顺序就是插入的顺序,类似数组。继承Collection接口,包含他的所有方法,他还定义了下面的两个重要方法。
get(int index):获取指定索引位置的元素
set(int index,Object object):将指定索引位置的元素修改为指定对象
List接口的实现类
ArrayList:实现了可变的数组,允许保存所有元素,包括null,根据索引位置随机快速访问,缺点插入对象和删除对象速度慢。
LinkedList:采用表链结构保存对象,有点插入删除对象速度快,缺点随机访问元素速度慢。
实例化操作:
List<E>list=new ArrayList<>();
List<E>list1=new LinkedList<>();
List <String>list=new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
int i=(int)(Math.random()*(list.size()-1));
System.out.println("随机获取了一个数是:"+list.get(i));
list.remove(2);
System.out.println("移除了索引为2的元素");
Iterator <String>it=list.iterator();
while(it.hasNext()){
String str=(String)it.next();
System.out.println(str);
}
Set集合
Set集合中的对象不按特定方式排序,不能包含重复对象,同样继承了Collection。
Set常用的实现类:
HashSet:由哈希表支持,不能保证排列顺序,允许null元素
TreeSet:在遍历集合时按自然顺序递增排序,也可以根据指定比较器递增排序
TreeSet类增加的方法
first():返回此set中当前第一个(最低)的元素
laset():返回此Set中当前最后一个(最高)的元素
comparator():返回此set中的元素进行排序的比较器,如果此Set使用自然顺序,则返回null。
headSet(E toElement):返回一个新的Set集合,新集合包含toElement。。。
*****过于抽象,无法理解**!***
Map集合
他没有继承Collection接口,他提供的是Key和value的映射。Map中不能包含相同的Key,每个Key也只能映射一个values。用的一种“散列技术”进行存储。
常用方法:
put(K key,V value):向集合中添加指定的key与value的映射关系
containskey(Object key):如果此映射关系包含指定的key的映射关系,则返回true
containsValue(Object value):如果此映射将一个或多个key映射到指定值,则返回true
get(Object key):存在指定key对象,返回对应的值,不存在返回null
keySet():返回该集合中的所有key对象形成的Set集合
values():返回该集合中所有值对象形成的Collection集合
Map<String,String>map=new HashMap<String,String>();//创建Map示例
map.put("1","苹果"); //添加数据
map.put("2","鸭梨");
Set<String>set=map.keySet();
Iterator<String>it=set.iterator();
System.out.println("打印Key集合中的元素:");
while(it.hasNext()){
System.out.println(it.next());
}
Collection<String>coll=map.values();
it=coll.iterator();
System.out.println("values集合中的元素:");
while(it.hasNext()){
System.out.println(it.next());
}
Map接口常用实现类有HashMap和TreeMap,一般用HashMap的比较多,HashMap基于哈希表的接口实现,添加删除映射关系速度快,查询速度也快。
而TreeMap中的映射关系存在顺序的。