n
匿名内部类
构造格式如下
new 父类构造函数(实参列表) | 实现接口()
{
//匿名内部类的类体部分
}
枚举类
枚举类可以实现接口,使用enum定义的枚举类继承了java.lang.Enum类,而不是Object类,并且实现了java.lang.Serializable和lava.lang.Comparable两个接口使用enum定义、非抽象的枚举类默认会使用final修饰,因此不能派生子类枚举类的构造器只能使用private访问控制符枚举类的所有实例必须在枚举类的第一行显示列出,且系统会自动添加public static final修饰符 使用示例 P215
public class Test {
public void judge(SeasonEnum e){
switch (e) {
case SPRING:
System.out.println("Spring");
break;
case SUMMER:
System.out.println("Summer");
case FALL:
System.out.println("Fall");
case WINTER:
System.out.println("Winter");
default:
break;
}
}
public static void main(String[] args){
for(SeasonEnum s:SeasonEnum.values())
{
System.out.println(s);
}
new Test().judge(SeasonEnum.SPRING);
}
}
enum SeasonEnum
{
SPRING, SUMMER, FALL, WINTER;
}
SPRING
SUMMER
FALL
WINTER
Spring
枚举类的Field,方法和构造器
最科学合理的使用方法 P218
public class Test {
public static void main(String[] args){
Gender gender = Enum.valueOf(Gender.class, "FEMALE");
System.out.println(gender.getName());
}
}
enum Gender{
MALE("男"), FEMALE("女");
private final String name;
private Gender(String name){
this.name = name;
}
public String getName()
{
return this.name;
}
}
女
包含接口和抽象方法的枚举类
P219,P220
public enum Operation implements Info{
PLUS
{
public double eva l(double x, double y)
{
return x+y;
}
public void info()
{
System.out.println("Plus");
}
},
MINUS
{
public double eva l(double x, double y)
{
return x-y;
}
public void info()
{
System.out.println("Minus");
}
},
TIMES
{
public double eva l(double x, double y)
{
return x*y;
}
public void info()
{
System.out.println("Times");
}
},
DIVIDE
{
public double eva l(double x, double y)
{
return x / y;
}
public void info()
{
System.out.println("Divide");
}
};
public abstract double eva l(double x, double y);
public static void main(String[] args) {
System.out.println(Operation.PLUS.eva l(3, 4));
System.out.println(Operation.MINUS.eva l(3, 4));
System.out.println(Operation.TIMES.eva l(3, 4));
System.out.println(Operation.DIVIDE.eva l(3, 4));
}
}
interface Info{
void info();
}
7.0
-1.0
12.0
0.75
Set
Set实现了Collection接口。Set不允许包含重复元素,集合多个对象之间没有明显的顺序。Set的实现有 HashSet 添加进HashSet的Object必须实现了hashCode()方法。元素之间用equals()方法比较是否相同。它有一个子类 LinkedHashSet,用hashCode()决定元素的储存位置,并将元素按插入顺序连接起来。TreeSet 可以确保集合中元素处于排序状态。
List
List实现了Collection接口。List代表一个元素有序,可重复的集合,集合中每个元素都有其对应的顺序索引。List允许包含重复元素,可以通过索引来访问指定位置的元素。List的实现有 ArrayList LinkedList 使用 Arrays.asList()方法可以生成一个固定长度的List
Map
Map用于保存具有映射关系的数据,因此Map保存着两组值,key和value。key和value存在单向一对一关系
使用泛型
List
strList = new ArrayList
(); Map
scores = new HashMap
(); // After
Java 7 List
strList = new ArrayList<>(); Map
scores = new HashMap<>();
Iterator
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class Test {
public static void main(String[] args){
List
strList = new LinkedList
(); strList.add("a"); strList.add("b"); strList.add("c"); strList.add("d"); Iterator it = strList.iterator(); while(it.hasNext()) { String str = (String)it.next(); System.out.println(str); if(str.equals("c"