Jukebox1.java
import java.util.*;
import java.io.*;
public class Jukebox1{
//ArrayList<String> songList=new ArrayList<String>();
//歌曲名称会存在String的ArrayList上
ArrayList<Song> songList=new ArrayList<Song>();
public static void main(String[] args){
new Jukebox1().go();
}
public void go(){
//这个方法会载入文件并列出内容
getSongs();
System.out.println(songList);
Collections.sort(songList);
System.out.println(songList);
//调用Collection静态的sort()然后再
//列出清单。第二次的输出会依照字母排序
}
void getSongs(){
try{
//File file=new File("SongList.txt");
File file=new File("SongListMore.txt");
BufferedReader reader=new BufferedReader(new FileReader(file));
String line=null;
while((line=reader.readLine())!=null){
addSong(line);
}
}catch(Exception ex){
ex.printStackTrace();
}
}
void addSong(String lineToParse){
String[] tokens=lineToParse.split("/");
//split()方法会用反斜线来拆开歌曲内容
//songList.add(tokens[0]);
//因为只需要歌曲名,所以只去第一想加入SongList
Song nextSong=new Song(tokens[0],tokens[1],tokens[2],tokens[3]);
songList.add(nextSong);
//使用解析出来的4项属性来创建Song对象并加入到list中
}
}
/*
String类型的输出
[Communication, Black Dog, Dreams, Comfortably Numb, Beth, 倒退噜]
[Beth, Black Dog, Comfortably Numb, Communication, Dreams, 倒退噜]
*/
/*
sort()方法只能接受Comparable对象的list
Song不是Comparable的子型,所以无法对Song的list排序
*/
//以泛型的观点来说,extends代表extends或implement
/*
java.lang.Comparable
public interface Comparable<T>(){
int compareTo(T o);
}
比较此对象与指定对象的顺序。如果该对象小于、
等于或大于指定对象,则分别返回负整数、零或正整数。
*/
Song.java
class Song implements Comparable<Song>{
String title;
String artist;
String rating;
String bpm;
public int compareTo(Song s){
return title.compareTo(s.getTitle());
}
//实现compareTo()的方法的程序代码
//返回Song比较的结果
Song(String t, String a, String r, String b){
title=t;
artist=a;
rating=r;
bpm=b;
}
public String getTitle(){
return title;
}
public String getArtist(){
return artist;
}
public String getRating(){
return rating;
}
public String getBpm(){
return bpm;
}
public String toString(){
return title;
}
//重写toStinr()方法
}
SongListMore.txt ; SongList.txt 包含每行的前两项
Communication/The Cardigans/5/80
Black Dog/Led Zeppelin/4/84
Dreams/Van Halen/6/120
Comfortably Numb/Pink Floyd/5/110
Beth/Kiss/4/100
倒退噜/黄克林/5/90
ArrayList不是唯一的集合
虽然ArrayList会是最常用的,但偶尔还是会有特殊情况。
下面列出几个较为重要的
★TreeSet
以有序状态保持并可防止重复
★HashMap
可用成对的name/value来保存与取出
★LinkedList
针对经常插入或删除中间元素所设计的高效率集合
(实际上ArrayList还是比较实用)
★HashSet
防止重复的集合,可快速地找寻相符的元素
★LinkedHashMap
类似HashMap,但可记住元素插入的顺序,也可以
设定成依照元素上次存取的先后来排序。
Comparator排序的使用 http://keating.iteye.com/blog/258987
分享到:
相关推荐
此外,读者还将学习到如何使用Java集合框架,包括数组列表、链表、映射和集合等数据结构,这些在实际编程中非常常用。 线程和并发处理也是《Head First Java》的重点。Java支持多线程编程,使得程序可以在同一时间...
### 《HEAD FIRST JAVA》笔记知识点总结 #### 第一章 进入Java的世界(基本概念) - **Java的工作原理与发展简史**: - Java是一种跨平台、面向对象的编程语言,由Sun Microsystems公司于1995年推出。它的设计...
《Head First Servlets & JSP》是一本广受欢迎的教材,它深入浅出地讲解了这些概念,帮助开发者通过SCWCD(Sun Certified Web Component Developer)认证。以下是一些关键知识点的详细解释: 1. **Servlet**: - *...
【Servlet&JSP基础知识】 ...以上是`head_first_servlet&jsp`学习笔记的主要知识点,涵盖了Servlet和JSP的基础、Web应用架构、MVC模式、会话管理和JSP编程等多个方面,为深入理解和实践Servlet与JSP开发奠定了基础。
《Head First Java》读书笔记——ZhangHao 在学习Java编程时,了解并掌握基本概念、类与对象、原始主数据类型和引用是至关重要的。这篇笔记将深入探讨这些核心概念,帮助初学者建立坚实的Java编程基础。 一、基本...
《Head First设计模式》是一本深受开发者喜爱的设计模式学习书籍,它以易懂且生动的方式介绍了23种经典设计模式。这些模式是软件工程中经过实践验证的最佳实践,旨在提高代码的可重用性、可读性和可维护性。下面,...
除了课程内容,阅读官方文档、经典教材如《Head First Java》、《Effective Java》等,以及观看开源项目和在线教程,可以帮助巩固理论知识,提升实践能力。 总之,Java学习笔记旨在为初学者提供全面的学习路径,从...
这些题目通常涵盖了数据结构与算法、Java内存模型、多线程、并发编程、IO/NIO、网络编程、Spring框架、MyBatis、JVM优化等多个主题。熟悉这些题目的答案不仅能让你在面试中应对自如,还能深入理解Java的核心概念和...
3. **书籍**:《Head First Java》、《Thinking in Java》、《Java核心技术卷》等经典著作,深入浅出地讲解Java。 4. **社区讨论**:Stack Overflow、CSDN、知乎等技术社区,可以解决学习中的问题,分享经验。 ...
3. **《Head First Java》**:以独特的视觉和互动方式讲解Java,适合初学者,通过轻松有趣的方式帮助读者理解复杂的概念。 4. **《Java并发编程实战》**:由Brian Goetz等作者编写,是Java并发编程的权威指南,涵盖...
3. **HeadFirst设计模式(中文版)**: - 设计模式是软件工程中解决常见问题的模板,本书以一种易于理解的方式介绍了各种设计模式。 - 适合希望提高软件设计能力的学习者。 ### 实战案例与项目开发 1. **疯狂...
《Head First Java》是Java初学者的一本经典教材,它以其独特的教学方式,通过丰富的图像和有趣的故事,帮助读者深入理解Java编程语言的核心概念。这个压缩包“headfirstjava笔记.zip”显然包含了学习这本书时的一些...
Robert Lafore在读《 Java中的数据结构和算法》一书时的练习。 分析成本 一个简单的挥杆应用程序,使我可以分析支出并构建图形。 蚂蚁 我与构建者Apache Ant进行的练习(文章,网络研讨会材料 )。 AntMavenGradle ...
《Datastructures using Java》**(2013):介绍了使用Java实现数据结构的方法,对算法和数据结构有兴趣的同学可以参考。 11. **Martin Ngobye.《Computing Static Slice for Java Programs》**(2012):这是一篇...
此外,笔记还会涵盖集合框架,包括ArrayList、LinkedList、HashSet、HashMap等数据结构的使用,这些都是Java编程中不可或缺的部分。 此外,你可能还会发现对《Effective Java》的笔记,这本书由Joshua Bloch撰写,...
leetcode 答案 Ombre 整理学习笔记 core_python: python核心编程 data_structure: 数据结构和算法 lettcodeinpython: Leetcode答案 weekly: 每周练习 PythonInLinux: python linux headfirst: headfirst java