ArrayList
ArrayList: 书写格式
ArrayList<Object> <>放的就是泛型,指的就是集合里面放入的数据类型。
- 泛型的好处:
-
省去了从集合中取出数据时的强制类型转换。
-
加了泛型,就会要求我们放入数据的时候,只能放入该数据类型的数据,那么取出来的时候也是这种数据类型。
-
<> 放我们指定的数据类型
-
Object: 是所有类的父类
-
ArrayList的主要内容
1、底层是数组(Object[])
* 2、ArrayList 元素个数 size() 方法
* 3、增(添加): add(元素): 数组的长度和size不是一回事,如果size()小于数组长度,直接将元素放入到数组里面。如果size()等于数组长度,会自动扩容。
* 4、删(删除):
* remove(元素): 删除第一次出现的元素
* remove(索引): 删除指定索引位置的元素
* 5、改(修改): set(索引,元素)
* 6、查(查询): get(索引)
*
*
* new IllegalArgumentException("Illegal Capacity: "+initialCapacity); 非法参数异常
HashSet
增强for循环
去重功能 (构造方法里面可以放集合,思路就是先把list转成set去重,然后再转成 list)
只有增删,没有改查
HashSet和HashTable的区别:
* 1 HashSet是线程不安全的,效率高,允许null值
* 2 HashTable是线程安全的,效率低,不允许null值
*
* 去重,HashSet开发时候用的比较少,一般集合都是用ArrayList
在某些场合下也需要ArrayList去重,可以使用HashSet
- 1、创建一个HashSet
2、将ArrayList中的元z素全部放入HashSet中
3、将HashSet中的元素全部放入ArrayList中
HashMap
- 增删改查 put remove pu t get (键是唯一的,值可以重复)
jdk8以后,底层是数组+链表+红黑树 - 负载因子:0.75
- 链表长度超过8转红黑树,红黑树长度小于6又转化成链表
- HashMap初始长度16
HashMap<Integer,Integer> hashmap = new HashMap<>();
hashmap.put(1,100);
hashmap.put(2,200);
hashmap.put(3,300);
hashmap.put(4,400);
// 1. key值的集合 hashmap.keySet()
System.out.println("hashmap.keySet() = " + hashmap.keySet());
for (Integer key : hashmap.keySet()){
System.out.print(key + " ");
}
System.out.println("\n");
// 2.value值的集合 hash
System.out.println("hashmap.values() = " + hashmap.values());
for (Integer value : hashmap.values()){
System.out.print(value + " ");
}
System.out.println("\n");
// 3.遍历key value的值
for (Integer key : hashmap.keySet() ){
Integer value = hashmap.get(key);
System.out.println(key + " : " + value);
泛型
集合里面放数据的时候,可以指定数据类型,这样从集合里面拿出数据的时候就不用做类型转换
Object: 是所有类的父类