Java基础之集合框架——使用集合Vector<>挑选演员(TryVector)
控制台程序。
 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)的更多相关文章
- Java:类集框架中集合的学习
		
Java:类集框架中集合的学习 集合 Java:Set的学习 Set是类集框架中的集合类.集合是不按特定的方式排序,并且没有重复对象的一种类. Q:Set如何操作?Set中的不按特定方式排序是怎么排序 ...
 - JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表
		
Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Co ...
 - Java基础学习笔记十六 集合框架(二)
		
List List接口的特点: 它是一个元素存取有序的集合.例如,存元素的顺序是11.22.33.那么集合中,元素的存储就是按照11.22.33的顺序完成的. 它是一个带有索引的集合,通过索引就可以精 ...
 - Java基础(十三):集合
		
一.Java 集合框架: 早在Java 2中之前,Java就提供了特设类.比如:Dictionary, Vector, Stack, 和Properties这些类用来存储和操作对象组.虽然这些类都非常 ...
 - JAVA基础知识总结15(集合容器)
		
集合框架:用于存储数据的容器. 1:对象封装数据,对象多了也需要存储.集合用于存储对象. 2:对象的个数确定可以使用数组,但是不确定怎么办?可以用集合.因为集合是可变长度的. 集合和数组的区别: 1: ...
 - Java基础知识总结之类的集合
		
Java集合概述 1.集合类也叫作容器类.它的功能相当于一个容器.可以存储数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组). 2.Java的集合(容器),它是用来”装对象的“(实际上是 ...
 - 夯实Java基础(十九)——集合
		
1.前言 集合在Java中的地位想必大家都知道,不用多BB了.无论是在我们现在的学习中还是在今后的工作中,集合这样一个大家族都无处不在,无处不用.在前面讲到的数组也是一个小的容器,但是数组不是面向对象 ...
 - java基础(十四)集合(一)
		
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
 - java基础笔记(9)----集合之list集合
		
集合 对于集合的理解,集合是一个容器,用于存储和管理其它对象的对象 集合,首先了解所有集合的父接口----collection 特点:存储任意object元素 方法 boolean add(Objec ...
 - JAVA基础部分复习(二、集合类型)
		
对于这些常用的集合,建议还是需要先了解一下底层实现原理,这样在不同的使用场景下才能选择更好的方案. Set介绍以及对比,常用方法: package cn.review.day02; import ja ...
 
随机推荐
- Object-relational mapping
			
https://en.wikipedia.org/wiki/Object-relational_mapping Object-relational mapping (ORM, O/RM, and O/ ...
 - Cookie操作
			
1.写cookie方法 #region 登录时写入cookie public static void LoginCookieSave(string uid, string loginname, str ...
 - JVM学习笔记
			
1. JVM中的直接引用和符号引用 JVM在装载class文件的时候,会有一步是将符号引用解析为直接引用的过程. 那么这里的直接引用到底是什么呢? 对于指向“类型”[Class对象].类变量.类方法的 ...
 - 三种查看SqlServer中数据物理pge页的方法
			
1.根据数据记录查看当前记录所在的文件编号.page页.以及在页中的插槽. 示例如下: SELECT top %%physloc%%, sys.fn_physlocFormatter (%%physl ...
 - go 安装
			
安装golang centos7 直接安装golang yum install golang centos6需添加软件源,然后再安装 rpm -ivh http://ftp.riken.jp/Linu ...
 - git项目版本管理
			
一个很小的HTML项目,使用.Git来记录和跟踪这个项目.包括以下内容: 创建版本库. 添加与修改文件. 创建新分支. 打标签并整理版本库. 克隆版本库. 创建版本库 Creating a Repos ...
 - 转:自定义ASP.NET MVC Html辅助方法
			
在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么 ...
 - [LeetCode]题解(python):031-Next Permutation
			
题目来源 https://leetcode.com/problems/next-permutation/ Implement next permutation, which rearranges nu ...
 - 【C++】动态内存与智能指针
			
C++常见的内存分配方式有三种: 从静态存储区分配,这里主要是存储局部static对象,类的static成员以及定义在函数之外的变量: 从栈内存分配,这里主要是存储函数内的非static对象: 从堆内 ...
 - HTML知识点总结以及典型例子讲解
			
一.HTML文本格式化标签(这些标签都不换行) eg: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...