黑马程序员JAVA编程阶梯:基础篇之第十七章

13

14 while(true) {

15 String line = sc.nextLine(); //将键盘录入的字符串存储在line中

16 if(\//如果字符串常量和变量比较,常量放17 面,这样不会出现空指针异常,变量里面可能存储null 18 break; 19 try {

20 int num = Integer.parseInt(line); //将数字字符串转换成数字 21 ts.add(num); 22 } catch (Exception e) {

23 System.out.println(\您录入的数据有误,请输入一个整数\24 } 25 26 } 27

28 for (Integer i : ts) { //遍历TreeSet集合 System.out.println(i); }

4.键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台。

[AppleScript] 纯文本查看 复制代码

黑马程序员济南中心 编著

? 01 Scanner sc = new Scanner(System.in);

02 System.out.println(\请输入5个学生成绩格式是:(姓名,语文成绩,数学成绩,英语成绩)\03 TreeSet ts = new TreeSet<>(new Comparator() { 04 @Override

05 public int compare(Student s1, Student s2) {

06 int num = s2.getSum() - s1.getSum(); //根据学生的总成绩降序07 列

08 return num == 0 ? 1 : num; 09 } 10 }); 11

12 while(ts.size() < 5) {

13 String line = sc.nextLine(); 14 try {

15 String[] arr = line.split(\

16 int chinese = Integer.parseInt(arr[1]); //转换语文成绩 17 int math = Integer.parseInt(arr[2]); //转换数学成绩 18 int english = Integer.parseInt(arr[3]); //转换英语成绩 19 ts.add(new Student(arr[0], chinese, math, english)); 20 } catch (Exception e) {

21 System.out.println(\录入格式有误,输入5个学生成绩格式是:(姓名,语文成绩,数学

黑马程序员济南中心 编著

22 绩,英语成绩\23 } 24 25 } 26

27 System.out.println(\排序后的学生成绩是:\28 for (Student s : ts) { System.out.println(s); }

EnumSet类

EnumSet是一个专为枚举类设计的集合类,EnumSet中的所有元素都必须是指定枚举类型的枚举值。

EnumSet类没有暴露任何构造器来创建该类的实例,程序应该通过它提供的static方法来创建EnumSet对象。

static EnumSet allOf(Class elementType):创建一个包含指定枚举类里所有枚举值的EnumSet集合。

static EnumSet complementOf(EnumSet s):创建一个其元素类型与指定EnumSet里元素类型相同的EnumSet集合,新EnumSet集合包含原EnumSet集合所不包含的、此枚举类剩下的枚举值(

即新EnumSet集合和原EnumSet集合的集合元素加起来就是该枚举类的所有枚举值)。 static EnumSet copyOf(Collection c):使用一个普通集合来创建EnumSet集合。

黑马程序员济南中心 编著

static EnumSet copyOf(EnumSet s):创建一个与指定EnumSet具有相同元素类型、相同集合元素的EnumSet集合。

static EnumSet noneOf(Class elementType):创建一个元素类型为指定枚举类型的空EnumSet。

static EnumSet of(E first, E...rest):创建一个包含一个或多个枚举值的EnumSet集合,传入的多个枚举值必须属于同一个枚举类。

static EnumSet range(E from, E to):创建一个包含从from枚举值到to枚举值范围内所有枚举值的EnumSet集合。 例子:

[AppleScript] 纯文本查看 复制代码 ?

01 import java.util.EnumSet; 02

03 enum Season{

04 SPRING,SUMMER,FAIL,WINTER 05 }

06 public class EnumSetTest {

07 public static void main(String[] args) {

08 EnumSet es1 = EnumSet.allOf(Season.class); 09 System.out.println(es1);

10 EnumSet es2 = EnumSet.noneOf(Season.class); 11 System.out.println(es2);

黑马程序员济南中心 编著

12 es2.add(Season.WINTER); 13 es2.add(Season.SPRING); 14 System.out.println(es2);

15 EnumSet es3 = EnumSet.of(Season.SUMMER , Season.WINTER); 16 System.out.println(es3);

17 EnumSet es4 = EnumSet.range(Season.SUMMER, Season.WINTER); 18 System.out.println(es4);

19 EnumSet es5 = EnumSet.complementOf(es4); 20 System.out.println(es5); 21 } 22 } 总结: 1.List

* a.普通for循环, 使用get()逐个获取

* b.调用iterator()方法得到Iterator, 使用hasNext()和next()方法 * c.增强for循环, 只要可以使用Iterator的类都可以用

* d.Vector集合可以使用Enumeration的hasMoreElements()和nextElement()方法 2.Set

* a.调用iterator()方法得到Iterator, 使用hasNext()和next()方法 * b.增强for循环, 只要可以使用Iterator的类都可以用

黑马程序员济南中心 编著

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4