1,List: ArrayList LinkedList 有序可重复
Set:HashSet TreeSet 无序不可重复
Map:HashMap TreeMap 键对值不可重复,值可重复
2,添加集合中的元素:
List,Set都用add,Map用put
创建基本上是:
Set<数据类型> set=new TreeSet<数据类型>();
List<数据类型> list=new LinkedList<数据类型>();
Map<数据类型,数据类型>map=new HashMap<数据类型,数据类型>();
**这里数的数据类型是类哦,不是int这样的是Integer这类的Class
其余 HashSet,ArrayList,TreeMap同理。
3,对于Get/Set remove的用法的不同
4,什么情况下用这些呢?(需要后面查找些资料认证总结下)
比如一个有好多学生,这多可以用List,如果要添加一个人的信息,比如住址,收入等的化可以用Map,那Set什么时候用?
当然这个也不存在严格的区别,其实都可以相互之间转换。
5,遍历:
有时候也可以直接输出比如创建了set,直接打印
System.out.print(set);
也可以用for循环输出
当然更多的时候用遍历
List Set大多数情况下是这样的。
Iterator<泛型>it= set.Interator();
while(it.hasNext()){
system.out.print(it.next());
}
大多数情况下类似如此,不过不同的情形会有不同的情况。
对于Map来说有两种遍历
第一种是在知道关键值的情况下
Set<泛型>set=map.keySet();
Interator<泛型> it=set.interator();
while(it.hasNext()){
泛型 key=it.next();
system.out.println(key+" "+map.get(key) );
}
第二种情况
Set<Map.Entry<Integer, String>> set = map2.entrySet();
Iterator<Map.Entry<Integer, String>> it = set.iterator();
while (it.hasNext()) {
Map.Entry<Integer, String> entry = it.next();
System.out.println(entry.getKey() + "=" + entry.getValue());//此句话也可以直接说成System.out.println(it.next);
}
6,Hash,与Hash有关,HashMap和HashSet一般情况下都要重写Equals和HashMap方法其实用快捷键就可以。
重写是因为防止相同的元素在同一集合中。因此如果说某个问题要求集合中的元素不能有重复的可以用HashMap和HashSet处理。
7,Tree,与树形相关TreeMap和TreeSet。一般遇到此类情况需要继承Comparable和comparator同时重写它们相对应的方法。
以下是Comparable的情况
class Book implements Comparable<Book> {
省略
@Override
public int compareTo(Book o) {
if (this.price < o.price) {
return -1;
} else if (this.price > o.price) {
return 1;
} else {
return this.name.compareTo(o.name);
}
}
}
}
以下是comparator的情况
它不像Comparable在类里面重写下方法就可以。Comparator需要单独建一个类,同时继承这个接口
class MyComprator implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
if (o1.getAge() < o2.getAge()) {
return 1;
} else if (o1.getAge() > o2.getAge()) {
return -1;
} else
return o1.getName().compareTo(o2.getName());
}
}
还要在主方法中添加如下情况
Map<Person, String> map = new TreeMap<Person, String>(new MyComprator());