首页 > 代码库 > 基础篇——集合与泛型

基础篇——集合与泛型

一、集合

TreeSet:以有序状态保持并可防止重复,其元素必须是Comparable

HashMap:可用成对的key/value来存取

LinkedList:针对经常插入或者删除中间元素所设计的高效率集合

HashSet:防止重复的集合,可快速地找出相符的元素

LinkedHashMap:类似HashMap,但可以记住元素插入的顺序,也可以设定成依照元素上次存取的先后来排序

ArrayList:可以避免重复的元素,动态的操作

二、排序

对于基础主数据类型,可以用Collection.sort()直接排序

Collection.sort():

public static <T extends Comparable<? super T>> void sort(List<T> list)

public <T extends Animal> void take(ArrayList<T> list){}

指定按照类中某一个实例变量来排序:

class Song implements Comparable<Song>{
String title;
@override
public int compareTo(Song s){
return title.compareTo(s.tile);
}
}
上述方法只能按照title来排序。

按照多种实例变量来排序:

1、创建并实现Comparator的内部类,以compare()方法代替compareTo()方法;

2、制作该类的实例;

3、调用重载版的sort();

public class box{
...
class compare implements Comparator<Song>{
@override
public int compare(Song one,Sone two){
return one.artist.compareTo(two.artist);
}

@override
public int wordscompare(Song one,Sone two){
return one.words-two.words;
}
}
...
public void go(){
...
compare ac = new compare();
Collection.sort(songList,ac);
}
}
三、对象相等判断

if(foo.equals(bar) && foo.hashCode()==bar.hashCode()){
//foo equals to bar
}
equals保证引用是一样的;hashCode会冲突;

四、多态参数与泛型

public <T extends Animal> void take(ArrayList<T> list)
public void take(ArrayList<? extends Animal> list)
典例:

ArrayList<Dog> dogs = new ArrayList<Animal>();
ArrayList<Animal> animals = new ArrayList<Dog>();
List<Animal> list = new ArrayList<Animal>();//ok
ArrayList<Dog> dogs = new ArrayList<Dog>();//ok
ArrayList<Animal> animals = dogs;
List<Dog> dogList = dogs;//ok
ArrayList<Object> objects = new ArrayList<Object>();//ok
List<Object> objList = objects;//ok
ArrayList<Object> objs = new ArrayList<Dog>();

五、

1、Collection.sort(List);

List中对象的类必须实现Comparable、compareTo()

2、Collection.sort(List,compare);

List中对象的类不必实现Comparable、Comparator

compare对象的类必须实现Comparator、compare()