- 常用集合
- ArrayList:基于动态数组的数据结构,随机访问时效率高
- TreeSet:以有序状态保持并可防止重复
- HashMap:可用成对的name/value来保存与取出
- LinkedList:针对经常插入或删除中间元素所设计的高效率的集合
- HashSet:防止重复的集合,可快速地找寻相符的元素
- LinkedHashMap:类似于HashMap,但可记住元素插入的顺序
可以使用TreeSet或Collections.sort()来实现数组元素按字母序排序
toString()方法定义在Object类中,java中每个类都有继承到,而且对象被System.out.println(对象)是调用类中的toString()方法
public <T extends Animal> void takeThing(ArrayList<T> list);//只要T是Animal及它的子类都可以调用这个方法
public void takeThing(ArrayList<Animal> list);//只有T是Animal类才可以调用这个方法
public void takeThing(ArrayList<? extends Animal> list);//万用类型,与第一行代码相同,extends同时表示继承和实现
- 如何对Song对象排序
- 第一种方法sort(List o)
- sort()不能对对象进行排序,sort()方法只接受Comparable对象的list
- Song类必须实现Comparable接口
- 只需覆盖compareTo(T o)方法,重点在于两个Song是如何比出大小的
class Song implements Comparable<Song>{
String title;
String artist;
public int compareTo(Song s){
return title.compareTo(s.getTitle());//调用String本身的compareTo方法
}
public String getTitle(){
return title;
}
public String getArtist(){
return artist;
}
}
- 第二种方法sort(List o,Comparator c)
- sort()有重载的版本,取用Comparator参数,不需要实现Comparable
- 创建并实现Comparator的内部类,以compare方法取代compareTo()
- 制作该类的实例,将参数传入
class ArtistCompare implements Comparator<Song>{
public int compare(Song a,Song b){
return a.getArtist().compareTo(b.getArtist());
}
}
//部分代码
ArtistCompare artistCompare=new ArtistCompare();
Collections.sort(songList,artistCompare);
- 使用HashSet时如何判断对象相等
- 引用相等性:堆上同一对象的两个引用(相同的hashcode),对象相等性:堆上的两个不同对象在意义上相同的(有相同的hashcode和两个对象之间的equals()返回true)
- 要让HashSet能正确地判断对象是否重复,就必须符合对象相等性,覆盖hashCode()与equals()方法
//相同的title则视为相同对象
public boolean equals(Object aSong){
Song s=(Song)aSong;
return title.equals(s.getTitle());
}
public int hashCode(){
return title.hashCode();
}
- 使用TreeSet对Song对象排序
- 让Song类实现Comparable接口,覆盖compareTo()方法
- 使用重载、取用Comparator参数的构造函数来创建TreeSet
public class ArtistCompare implements Comparator<Song>{
public int compare(Song a,Song b){
return (a.getArtist().compareTo(b.getArtist()));
}
}
//部分代码
ArtistCompare artistCompare=new ArtistCompare();
TreeSet<Song> tree=new TreeSet<Book>(artistCompare);
- Map的使用
public class TestMap{
public static void main(String[] args){
HashMap<String,Integer> scores=new HashMap<String,Integer>();
scores.put("Tom",60);
System.out.println(scores.get("Tom"));
}
}