控制台程序。

  1. public class Person implements Comparable<Person> {
  2. // Constructor
  3. public Person(String firstName, String surname) {
  4. this.firstName = firstName;
  5. this.surname = surname;
  6. }
  7.  
  8. @Override
  9. public String toString() {
  10. return firstName + " " + surname;
  11. }
  12.  
  13. // Compare Person objects
  14. public int compareTo(Person person) {
  15. int result = surname.compareTo(person.surname);
  16. return result == 0 ? firstName.compareTo(person.firstName) : result;
  17. }
  18.  
  19. private String firstName; // First name of person
  20. private String surname; // Second name of person
  21. }

使用sort()方法对列表排序时,必须通过某种方式确定列表中对象的顺序。最合适的方式就是在Person类中实现Comparable<>接口。Comparable<>只声明了comparableTo()方法。

如果集合中存储的对象的类型实现了Comparable<>接口,就可以把集合对象作为参数传送给sort()方法。

  1. import java.util.Vector;
  2. import java.util.ListIterator;
  3. import java.util.Collections;
  4. import java.io.*;
  5.  
  6. public class TryVector {
  7. public static void main(String[] args) {
  8. Person aPerson = null; // A person object
  9. Vector<Person> filmCast = new Vector<>();
  10.  
  11. // Populate the film cast
  12. while(true) { // Indefinite loop
  13. aPerson = readPerson(); // Read in a film star
  14. if(aPerson == null) { // If null obtained...
  15. break; // We are done...
  16. }
  17. filmCast.add(aPerson); // Otherwise, add to the cast
  18. }
  19.  
  20. int count = filmCast.size();
  21. System.out.println("You added " + count + (count == 1 ? " person": " people") + " to the cast:");
  22. // Show who is in the cast using an iterator
  23. ListIterator<Person> thisLot = filmCast.listIterator();
  24.  
  25. while(thisLot.hasNext()) { // Output all elements
  26. System.out.println( thisLot.next());
  27. }
  28. System.out.println("\nThe vector currently has room for " + (filmCast.capacity() - count) + " more people.");
  29.  
  30. // Now sort the vector contents and list it
  31. Collections.sort(filmCast);
  32. System.out.println("\nThe cast in ascending sequence is:");
  33. for(Person person : filmCast) {
  34. System.out.println(person);
  35. }
  36. }
  37.  
  38. // Read a person from the keyboard
  39. static Person readPerson() {
  40. // Read in the first name and remove blanks front and back
  41. String firstName = null;
  42. String surname = null;
  43. System.out.println("\nEnter first name or ! to end:");
  44. try {
  45. firstName = keyboard.readLine().trim(); // Read and trim a string
  46.  
  47. if(firstName.charAt(0) == '!') { // Check for ! entered
  48. return null; // If so, we are done...
  49. }
  50.  
  51. // Read in the surname, also trimming blanks
  52. System.out.println("Enter surname:");
  53. surname = keyboard.readLine().trim(); // Read and trim a string
  54. } catch(IOException e) {
  55. System.err.println("Error reading a name.");
  56. e.printStackTrace();
  57. System.exit(1);
  58. }
  59. return new Person(firstName,surname);
  60. }
  61.  
  62. static BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
  63. }

把filmCast对象传送给Collections类的sort()静态方法,就会导致对集合中的对象排序。

键盘对象是InputStreamReader对象中封装的System.in,而InputStreamReader对象封装在BufferedReader对象中。InputStreamReader对象可以把输入从字节流System.in转换为字符。BufferedReader对象缓存了从InputStreamReader读入的数据。因为输入包含一系列字符串,而每个字符串占一行,所以readLine()方法可以完成我们需要的工作。

Java基础之集合框架——使用集合Vector<>挑选演员(TryVector)的更多相关文章

  1. Java:类集框架中集合的学习

    Java:类集框架中集合的学习 集合 Java:Set的学习 Set是类集框架中的集合类.集合是不按特定的方式排序,并且没有重复对象的一种类. Q:Set如何操作?Set中的不按特定方式排序是怎么排序 ...

  2. JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表

    Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Co ...

  3. Java基础学习笔记十六 集合框架(二)

    List List接口的特点: 它是一个元素存取有序的集合.例如,存元素的顺序是11.22.33.那么集合中,元素的存储就是按照11.22.33的顺序完成的. 它是一个带有索引的集合,通过索引就可以精 ...

  4. Java基础(十三):集合

    一.Java 集合框架: 早在Java 2中之前,Java就提供了特设类.比如:Dictionary, Vector, Stack, 和Properties这些类用来存储和操作对象组.虽然这些类都非常 ...

  5. JAVA基础知识总结15(集合容器)

    集合框架:用于存储数据的容器. 1:对象封装数据,对象多了也需要存储.集合用于存储对象. 2:对象的个数确定可以使用数组,但是不确定怎么办?可以用集合.因为集合是可变长度的. 集合和数组的区别: 1: ...

  6. Java基础知识总结之类的集合

    Java集合概述 1.集合类也叫作容器类.它的功能相当于一个容器.可以存储数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组). 2.Java的集合(容器),它是用来”装对象的“(实际上是 ...

  7. 夯实Java基础(十九)——集合

    1.前言 集合在Java中的地位想必大家都知道,不用多BB了.无论是在我们现在的学习中还是在今后的工作中,集合这样一个大家族都无处不在,无处不用.在前面讲到的数组也是一个小的容器,但是数组不是面向对象 ...

  8. java基础(十四)集合(一)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  9. java基础笔记(9)----集合之list集合

    集合 对于集合的理解,集合是一个容器,用于存储和管理其它对象的对象 集合,首先了解所有集合的父接口----collection 特点:存储任意object元素 方法 boolean add(Objec ...

  10. JAVA基础部分复习(二、集合类型)

    对于这些常用的集合,建议还是需要先了解一下底层实现原理,这样在不同的使用场景下才能选择更好的方案. Set介绍以及对比,常用方法: package cn.review.day02; import ja ...

随机推荐

  1. spring对dao层的支持(datasource的作用)

    本文大多数内容转自“http://www.cnblogs.com/liunanjava/p/4412408.html”感谢原作者 在做一个项目时,持久层并没有使用spring jpa和hibernat ...

  2. 鼠标选择文字事件js代码,增加层问题

    在页面中增加一个js代码,当用户用鼠标选择文字(鼠标拖动涂蓝文字)时,会出现一个层,提示与这个选择文字有个的信息<script type="text/javascript"& ...

  3. 免费api大全(更新中)

    免费api大全(更新中) API大全  http://www.apidq.com/    (这个碉堡了) 天气接口 气象局接口 完整数据:http://m.weather.com.cn/data/10 ...

  4. Bootstrap页面布局18 - BS导航路径以及分页器

    导航路径:又叫“面包屑”,功能是让用户知道所处的位置. <!--面包屑--> <ul class='breadcrumb'> <li><a href='#'& ...

  5. phpcms v9 模板调用代码大全

    另:每个栏目会对应当前所选模型的三个模板文件:  这些模板文件所在位置:phpcms/templates/default/content/ 目录下,如果想修改模板文件,只需要到此目录下找到对应的模板文 ...

  6. (转)js一道比较考验的题目

    转载下别人曾经出过的一道面试题,此题是他出的一套前端面试题中的最后一题,用来考核面试者的JavaScript的综合能力,很可惜到目前为止的将近两年中,几乎没有人能够完全答对,并非多难只是因为大多面试者 ...

  7. pro7

    1.本次课学习到的知识点: 函数的作用 确定函数的功能 定义函数 调用函数 2.实验过程中遇到的问题及解决方法: 定义函数时 变量的定义会出现混乱 通过看例题 多练习 逐渐熟悉 需从数学角度解决问题时 ...

  8. 简述AFN(AFNetWorking 2.X)的实现分析和简单使用【转】

    [转载] Axc注:版本为AFNetWorking 2.6    3.0需要修改大部分对象 一:声明本 人以前一直是使用ASI网络请求类库的.最近才开始了解使用AFNetworing这个类库.网上也肯 ...

  9. python 之 utf-8编码的秘密

    python3的默认编码方案是utf-8编码,看了些资料,来做总结. 要说utf-8,就要说说unicode,要说unicode,就要说ASCII,我们还是慢慢来. 1.ASCII ASCII编码最初 ...

  10. 转:Windows Socket五种I/O模型

    原文转自:  Windows Socket五种I/O模型 Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模 ...