zoukankan      html  css  js  c++  java
  • Java基础之集合框架——使用集合Vector<>挑选演员(TryVector)

    控制台程序。

     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("
    The 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("
    The 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("
    Enter 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 
    63   static BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
    64 }

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

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

  • 相关阅读:
    linux如何添加内核模块
    LINUX内核符号表
    MIPS 架构
    将char转成bit,文件读写
    回顾一下今天VIM历程,加深印象,以免忘记!
    Notebook of A Road Map Through Nachos
    老林课上笔记
    C# 通过探测邮件服务器进行Email地址有效性检验
    详解在visual studio中使用git版本系统(图文)
    基于aspnet Forms身份验证基本原理
  • 原文地址:https://www.cnblogs.com/mannixiang/p/3430289.html
Copyright © 2011-2022 走看看