*Collection
Collection包含了List和Set两大分支
List接口(ArrayList,LinkedList)
Set是一种不包括重复元素的Collection。它维持它自己的内部排序,所以随机访问没有任何意义。与List一样,它同样允许null的存在但是仅有一个。由于Set接口的特殊性,所有传入Set集合中的元素都必须不同,
ArrayList
ArrayList是一个动态数组,也是我们最常用的集合。它允许任何符合规则的元素插入甚至包括null。
LinkedList
同样实现List接口的LinkedList与ArrayList不同,ArrayList是一个动态数组,而LinkedList是一个双向链表。所以它除了有ArrayList的基本操作方法外还额外提供了get,remove,insert方法在LinkedList的首部或尾部。
Set接口(HashSet,TreeSet)
HashSet
HashSet 是一个没有重复元素的集合。它是由HashMap实现的,不保证元素的顺序(
TreeSet**
TreeSet是一个有序集合,其底层是基于TreeMap实现的,非线程安全。TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方式,自然排序和定制排序,其中自然排序为默认的排序方式。
Map接口(HashMap,TreeMap)
Map与List、Set接口不同,它是由一系列键值对组成的集合,提供了key到Value的映射。在Map中它保证了key与value之间的一一对应关系。也就是说一个key对应一个value,所以它不能存在相同的key值,当然value值可以相同。
HashMap
…
TreeMap
TreeMap 是一个有序的key-value集合,非同步,现,每一个key-value节点作为红黑TreeMap存储时会进行排序的,会根据key来对key-value键值对进行排序,其中排序方式也是分为两种,一种是自然排序,一种是定制排序,具体取决于使用的构造方法。
自然排序:
TreeMap中所有的key必须实现Comparable接口,并且所有的key都应该是同一个类的对象,否则会报ClassCastException异常。
定制排序:
定义TreeMap时,创建一个comparator对象,该对象对所有的treeMap中所有的key值进行排序,采用定制排序的时候不需要TreeMap中所有的key必须实现Comparable接口。
Iterator 与 ListIterator详解
Iterator
是一个接口,它是集合的迭代器。集合可以通过Iterator去遍历集合中的元素。Iterator提供的API接口如下:
boolean hasNext():
判断集合里是否存在下一个元素。如果有,hasNext()方法返回 true。
Object next():
返回集合里下一个元素。
void remove():
删除集合里上一次next方法返回的元素。
ListIterator
ListIterator是一个功能更加强大的迭代器, 它继承于Iterator接口,只能用于各种List类型的访问。可以通过调用listIterator()方法产生一个指向List开始处的ListIterator, 还可以调用listIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIterator.
(1)双向移动(向前/向后遍历).
(2)产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引.
(3)可以使用set()方法替换它访问过的最后一个元素.
(4)可以使用add()方法在next()方法返回的元素之前或previous()方法返回的元素之后插入一个元素.
作业
一:使用List存储企鹅信息
public class Penguin {
private String name ; // 昵称
private String sex; // 性别
/**
* 两个参数构造方法。
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return name + “\t” + sex ;
}
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List penguin=new ArrayList();
Penguin pen=new Penguin();
pen.setName(“欧欧”);
pen.setSex(“Q仔”);
Penguin pen1=new Penguin();
pen1.setName(“丫丫”);
pen1.setSex(“Q妹”);
Penguin pen2=new Penguin();
pen2.setName(“菲菲”);
pen2.setSex(“Q妹”);
Penguin pen3=new Penguin();
pen3.setName(“美美”);
pen3.setSex(“Q妹”);
penguin.add(pen);
penguin.add(pen1);
penguin.add(pen2);
penguin.add(pen3);
System.out.println(“共计有”+penguin.size()+“只企鹅”);
for(int i=0;i<penguin.size();i++){
Penguin guin=penguin.get(i);
System.out.println(guin.toString());
}
System.out.println("");
penguin.remove(pen2);
penguin.remove(pen3);
System.out.println(“删除后共计有”+penguin.size()+“只企鹅”);
System.out.println(“分别是:”);
for(int i=0;i<penguin.size();i++){
Penguin guin=penguin.get(i);
System.out.println(guin.toString());
}
System.out.println("");
if(penguin.contains(pen3)){
System.out.println("\n集合中包含美美的信息");
}else{
System.out.println("\n集合中不包含美美的信息");
}
}
二Map接口 根据宠物昵称查找宠物
public class Pet {
private String dog;
private String name;
public String getDog() {
return dog;
}
public void setDog(String dog) {
this.dog = dog;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String soTring() {
return dog+"\t"+name;
}
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class Tese2 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<String, String>();
map.put(“欧欧”, “凯美瑞”);
Scanner scanner=new Scanner(System.in);
System.out.print(“请输入宠物昵称:”);
String num=scanner.next();
if (map.containsKey(num)) {
System.out.print (map.values());
}
}
三使用Iterator迭代Map中的企鹅信息
public class Pen {
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Tese3 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<String, String>();
map.put(“亚亚”, “Q妹”);
map.put(“菲菲”, “Q妹”);
map.put(“欧欧”, “Q仔”);
map.put(“美美”, “Q妹”);
Set keys=map.keySet();
Iterator it=keys.iterator();
while (it.hasNext()) {
//取得key的值
String type = (String) it.next();
//根据key取得values值
String val = map.get(type);
//输出
System.out.println(type+"\t"+val);
}
}