head first java数据结构笔记(上)

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,但可记住元素插入的顺序,也可以
设定成依照元素上次存取的先后来排序。

[url]Comparator排序的使用[/url] [url]http://keating.iteye.com/blog/258987[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值