用来存储一堆元素,其中元素的数据类型可以不同,而且长度可变
二、集合体系架构:| Collection (单值存储) | Map | |
| List 有序,添加顺序,可重复 | set 无序,不遵循添加顺序,无重复 | key-value 键值对 |
| ArrayList | HashSet | HashMap |
| linkedList | ||
| Vector (线程安全类 ) | TreeSet | Hashtable |
| Stack | ||
1.ArrayList集合:
Listlist = new ArrayList (); //添加元素 list.add("a"); list.add("e"); list.add("e"); list.add("11"); //集合长度 Sysout.out.println(list.size()); //取下标为1的元素 Sysout.out.println(list.get(1));
其方法可以看API帮助文档,里面有非常详细的讲解
总结一些数组和ArrayList集合的区别
集合的元素一旦被删除,后面的元素会串位
集合中size会根据实际元素的数量动态调整,而数组的长度无论元素怎么定义,都是固定的
2.HashSet集合:
特点:非线程安全类,元素无重复,无序性
其常用方法也可以查看API帮助文档
HashSet也可以存储自定义的类:默认情况下:自定义类是依靠对象来区分是否是同一元素,对象相同则认为是同一个元素,会出现覆盖,对象不同,就算属性相同也认为不是同一个元素,不会覆盖,所以HashSet集合存储对象时,一般会根据对象的覆盖条件,重写equals以及hashCode方法
无序性的产生原因:
是因为Hash表 HashSet底层就是用Hash表来实现的(无序无重复)
hash算法:元素在容器中存储时,判断其位置的一种算法
无重复性的产生原因:
每个元素根据自身的特性,利用hash算法来计算该元素在容器中的位置,以达到相同的元素的位置相同,不同元素的位置尽量不同的一种数据结构
Hash表适合于对元素的快速定位查找
缺点:在长度一定时Hash冲突在是一定会存在的
3.TreeSet集合:
特点:无序(但是可以遵循人为规定的顺序),无重复,所有存储在TreeSet集合中的对象必须实现Comparable接口
public class Person implements Comparable四、Map集合(key-value 键值对):{ private int age; public int getAge() { return age; } public Person(int age){ this.age = age; } //返回值负数和正数并不决定大小 //决定了this是往前还是往后,如果返回值为负数则this更往前,反之this更往后 //降序 public int compareTo(Person p) {//用来判断元素在集合中的位置 //p 另外一个是要进集合的元素 , this 已存在于集合里的对象 if (this.age > p.age){//越小越往前 return -1; }else if (this.age < p.age){ return 1; }else{ return 0; } } public static void main(String[] args) { //TreeSet集合中评判元素是否相等用的compareTo返回值为0 Set set = new TreeSet (); set.add(new Person(10)); set.add(new Person(20)); set.add(new Person(15)); set.add(new Person(8)); set.add(new Person(22)); for (Person p : set){ System.out.println(p.getAge());//8 10 15 20 22 } } }
1.HashMap:
特点:相同的键合并,与值无关
核心方法:可以查看API帮助文档
1. V put(K key, V value)
2. V get(Object key) 获取某个键所对应的值,如果值不存在则返回null
3. V remove(Object key)删除某个键与其对应的值
4. int size() Map集合的长度
5. boolean containsKey(Object key) 返回一个布尔类型的值,是否包含所输入的键
6. boolean containsValue(Object value) 返回一个布尔类型的值,是否包含所输入的值
7. SetkeySet() 获取全部的键,并形成一个Set集合
2.TreeMap:
特点:TreeMap特点:键有序,与值无关
核心方法:可以查看API帮助文档,与HashMap类似
1. V put(K key, V value)
2. V get(Object key) 获取某个键所对应的值,如果值不存在则返回null
3. V remove(Object key)删除某个键与其对应的值
4. int size() Map集合的长度
5. boolean containsKey(Object key) 返回一个布尔类型的值,是否包含所输入的键
6. boolean containsValue(Object value) 返回一个布尔类型的值,是否包含所输入的值
7. SetkeySet() 获取全部的键,并形成一个Set集合
本人会定期发表关于Java的相关知识,如果有错误请指出,觉得好请点赞,收藏加关注,谢谢!!



