JAVA基础知识——集合类

时间:2023-02-15 07:25:42

先放一个图:

JAVA基础知识——集合类

四个比较:

List接口和Set接口

相同:都继承了Collection
不同:1、List是有序,允许有相同元素的Collection;Set不允许有相同的元素,即e1.equals(e2)=false;
2、List 还提供了一个listIterator()方法,返回一个ListIterator接口多了一些增删遍历之类的方法
3、实现List接口的常用类LinkedList、ArrayList、Vector、Stack ;实现Set接口常用类HashSet、TreeSet

ArrayList类和Vector类

相同:1、都实现了List接口,ArrayList实现了可变大小的数组,它允许所有元素,包括null。每个ArrayList实例都有一个容量(Capacity),用于存储元素的数组的大小
2、二者创建的iterator是同一接口
不同:Vector创建的iterator是同步的,当有一个在被创建或者使用,另一个线程改版了Vector的状态就会报错;ArrayList和LinkedList都是不同步的

HashMap类和Hashtable类

Hashtable继承Map接口,实现一个key-value映射的哈希表(不想写了)

HashSet类和TreeSet类

相同:都实现了Set接口,集合中不能含有相同元素的数
不同:1、TreeSet判断两个独享是否相同的方法是Compare接口中的compareTo()方法,不仅可以比较是否相等还可以比较大小;HashSet用的继承自Object类的equals()方法,而且只能比较是否相等
2、Set集合本来输出顺序与输入顺序无关,TreeSet用compare()方法进行比较,所以输出时会按照生序输出
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class TestSet {
public static void main(String [] args)
{
Set hashSet = new HashSet();
Set treeSet = new TreeSet();
hashSet = fillSet(hashSet);
System.out.println(hashSet);
treeSet = fillSet(treeSet);
System.out.println(treeSet);
}
public static Set fillSet(Set set)
{
while(set.size() < 7)
{
set.add((int)(Math.random()*35+1));
}
return set;
}
}

两个家族:

Map

Collection

总结

1.涉及到堆栈、队列等操作,可以考虑用List;对于需要快速插入,删除元素,可以考虑LinkedList;如果需要快速随机访问元素,可以考虑ArrayList
2.理论来了,静待实践吧