Java中集合小结

时间:2022-09-03 15:54:59
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());