控制台程序。

 public class Person implements Comparable<Person> {
// Constructor
public Person(String firstName, String surname) {
this.firstName = firstName;
this.surname = surname;
} @Override
public String toString() {
return firstName + " " + surname;
} // Compare Person objects
public int compareTo(Person person) {
int result = surname.compareTo(person.surname);
return result == 0 ? firstName.compareTo(person.firstName) : result;
} private String firstName; // First name of person
private String surname; // Second name of person
}

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

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

 import java.util.Vector;
import java.util.ListIterator;
import java.util.Collections;
import java.io.*; public class TryVector {
public static void main(String[] args) {
Person aPerson = null; // A person object
Vector<Person> filmCast = new Vector<>(); // Populate the film cast
while(true) { // Indefinite loop
aPerson = readPerson(); // Read in a film star
if(aPerson == null) { // If null obtained...
break; // We are done...
}
filmCast.add(aPerson); // Otherwise, add to the cast
} int count = filmCast.size();
System.out.println("You added " + count + (count == 1 ? " person": " people") + " to the cast:");
// Show who is in the cast using an iterator
ListIterator<Person> thisLot = filmCast.listIterator(); while(thisLot.hasNext()) { // Output all elements
System.out.println( thisLot.next());
}
System.out.println("\nThe vector currently has room for " + (filmCast.capacity() - count) + " more people."); // Now sort the vector contents and list it
Collections.sort(filmCast);
System.out.println("\nThe cast in ascending sequence is:");
for(Person person : filmCast) {
System.out.println(person);
}
} // Read a person from the keyboard
static Person readPerson() {
// Read in the first name and remove blanks front and back
String firstName = null;
String surname = null;
System.out.println("\nEnter first name or ! to end:");
try {
firstName = keyboard.readLine().trim(); // Read and trim a string if(firstName.charAt(0) == '!') { // Check for ! entered
return null; // If so, we are done...
} // Read in the surname, also trimming blanks
System.out.println("Enter surname:");
surname = keyboard.readLine().trim(); // Read and trim a string
} catch(IOException e) {
System.err.println("Error reading a name.");
e.printStackTrace();
System.exit(1);
}
return new Person(firstName,surname);
} static BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
}

把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. nginx 配置文件分析以及配置负载均衡器

    修改Nginx核心配置文件nginx.conf # cat /usr/local/nginx/conf/nginx.conf user www www; worker_processes ; # 工作 ...

  2. swfit-pod使用

    一.查询第三方版本号 pod search  SDWebImage 二.项目添加pod 1.在终端打开项目路径 2.输入  pod init 生成Podfile 三.在Podfile输入需要的第三方 ...

  3. 20145317彭垚 《Java程序设计》第7周学习总结

    20145317彭垚 <Java程序设计>第7周学习总结 教材学习内容总结 第十三章 时间与日期 13.1.1 时间的度量·即使标注为GMT(格林威治时间),实际上谈到的的是UTC(Uni ...

  4. Latex公式换行、对齐

    http://blog.sina.com.cn/s/blog_64827e4c0100vnqu.html 换行后等式对齐 \begin{equation}\begin{aligned}R(S_2)&a ...

  5. egrep 查找IP

    1. egrep '([^0-9]|\<)(([0-1]?[0-9]{0,2}|([2]([0-4][0-9]|[5][0-5])))\.){3}([0-1]?[0-9]{0,2}|([2]([ ...

  6. Amazon captcha

    Navigated to https://images-na.ssl-images-amazon.com/captcha/xzqdsmvh/Captcha_dxnamcsjjf.jpgdocument ...

  7. 2认识HTML中的“ML”:深入理解超文本

    HTML是描述网页结构的标记语言(即HTML中的'ML'),而HT指把一个网页链接到其他网页. <a>元素可以创建超文本链接到另外一个网页,<a>元素中的内容在网页中是可点击的 ...

  8. web项目中 集合Spring&使用junit4测试Spring

    web项目中 集合Spring 问题: 如果将 ApplicationContext applicationContext = new ClassPathXmlApplicationContext(& ...

  9. avalon---qunar ued

    http://avalonjs.github.io/ http://ued.qunar.com/ https://github.com/RubyLouvre/avalon 1.前后端分离-- 2.gr ...

  10. uiwebview的基本使用

    http://blog.csdn.net/daiyelang/article/details/40989389