javahigh_cha01

1、对象数组

缺陷:类型固定,长度固定

//objarr.Student@1b6d3586
//objarr.Student 类型
//1b6d3586 地址
//未重写toString方法的类对象,输出对象的类型@地址
//重写了toString方法的类对象,输出toString的返回值

2、泛型

定义:类型参数化

作用域:类级,方法级

缺陷:不能直接实例化(new),不能是基本类型(int,byte,float)

若需要使用基本类型的数据作为泛型元素,则统一使用包装类

boolean

//类:封装
//类方法:逻辑代码封装
//类属性:共享变量封装
//内部类:封装
//匿名内部类:封装(方法级)
class A<T>{
    //内部类
    class B{}
    
	T[] arr = new T[10];  ❌
    public void show(A<T> a){}
}

//基本类型      =>		包装类型
//boolean      =>     Boolean
//byte         =>     Byte
//short        =>     Short
//int          =>     Integer	★
//long         =>     Long
//float        =>     Float
//double       =>     Double
//char 		   =>     Character	★

3、长度固定

代码逻辑,实现了伪动态数组

copy = array;
capacity= (int)Math.ceil((array.length+(capacity-array.length+size))*EXPAND_FACTOR);
array = new Object[capacity];
System.arraycopy(copy,0,array,0,size);
copy = EMPTY;

4、集合框架

Collection:
  • public interface Collection<E>
    extends Iterable<E>
    
  • 不提供此接口的任何直接实现:它提供了更具体的子接口的实现,如SetList

List<E> list = Arrays.asList(E...e);//将动态参数封装成List集合
ArratList arr = ...;
	ArrayList中重写了toString方法
	
    //新增
    arr.add(E e); // 尾部追加
	arr.add(int index,E e);//向集合中指定的位置(下标)插入元素
	arr.addAll(Collection<E> cs);//尾部追加参数集合
	arr.addAll(int index,Collection<E> cs);//向集合中指定位置(下标)插入集合参数

	//删除
	arr.remove(int index);//删除指定位置(下标)元素
	//arr.remove(Object obj);//删除符合参数条件的元素
		//equals:Object (==) 比较地址
		//override equals 指定的比较规则
	arr.removeIf(Predicator<E> filter);//删除满足参数函数条件的元素
		//list.removeIf((a) -> a.getName().equals("zl"));//删除姓名位zl的同学
        //list.removeIf((a) -> a.getAge()<20);//删除年龄小于20岁的学员
	arr.removeAll(Collection<E> cs)//删除参数集合中的元素
        //相当于求 arr 相对于 cs 的差集
    arr.retainAll(Collection<E> cs)//删除参数集合以外的元素
        //相当于求 arr 相对于 cs 的交集
        
	boolean isEmpty = arr.isEmpty();//集合是否为空
	int size = arr.size();//提取当前集合中元素的数量
	Iterator<E> it = arr.iterator();//获取集合的迭代器对象

	arr.clear(); //清空所有元素
	List<E> copy = (Lsit<E>)arr.clone();//浅克隆一份集合
	boolean has = arr.contains(E e); //是否存在参数元素 e.equals
	E e = arr.get(int index);//根据下标提取元素
	int index = arr.indexOf(E e);//获取参数元素的位置(下标),不存在返回-1
		//左侧第一个
	int index = arr.lastIndexOf(E e);//获取参数元素的位置(下标),不存在返回-1
		//右侧第一个
	arr.set(int index,E e);//替换指定位置(下标)的元素	
	arr.sort(Comparator<E> e);//根据参数的规则对集合排序
	E[] es = arr.toArray(E[] type);//返回参数类型的包含所有元素的数组
	arr.trimToSize();//修剪数组长度为元素实际数量
	
	//是否存在重复
	//如果是,有几个重复
LinkedList list = ...
    LinkedList();
    LinkedList(Collection<E> list);
    
    LinkedList: 链表
    list.addFirst(E e);//头部追加
	list.addLast(E e);//尾部追加
	Iterator<E> it = list.decendingIterator();//逆向迭代器
	E e = list.getFirst();//提取(但不删除)第一个节点
	E e = list.getLast();//提取(但不删除)最后一个节点
	E e = list.pollFirst;//提取并删除第一个节点元素
	E e = list.pollLast;//提取并删除第一个节点元素

	E e = list.removeFirstOccurence(Object obj);//删除第一个匹配节点元素
	E e = list.removeLastOccurence(Object obj);//删除最后一个匹配节点元素 
	E e = list.removeFirst();//删除第一个节点元素,空报异常
	E e = list.removeLast();//删除最后一个节点元素,空报异常


	Queue:先进先出
	list.offer(E e);//入队
	E e = list.peek();//提取队头
	E e = list.poll();//出队
	
	Stack:后进先出
	E e = list.pop; //出栈 <=> pollFirst
	list.push(E e);//压栈
	
HashMap<K,V> map = ...
    #Hash碰撞
    HashMap();
	HashMap(int initialCapacity);
	HashMap(Map<K,V> map);

	V v = map.put(K key,V value);//添加键值对
		//如果k已存在,value覆盖原来键对应的值,并将其返回,不存在返回null
	map.putAll(Map<K,V> sub);//添加子Map
	V v = map.putIfAbsent(K key,V value); //不存在key添加,否则返回key对应的值

    Set<Map.Entry<K,V>> set = map.enrtySet();//提取所有键值对
	Set<k> keys = map.keySet();
	Collection<V> values = map.values();//提取所有值
	V v = map.get(Object key);//根据键提取值
	V v = map.getOrDefault(Object key,V defaultValue);//根据键提取值,不存在返回默认值

	int size = map.size();//获取键值对的数量
	map.clear();//清空
	boolean empty = map.isEmpty();//是否为空
	
	boolean has = map.containsKey(Object key);//是否存在键
	
	V v = map.remove(Object key);//根据key删除,存在返回键对应的值,否则返回null
	boolean yes = map.remove(Object key,Object value);//键值对都匹配返回true,否则false

	boolean yes = map.replace(Object key,Object value,Object newValue);
	//如果键值都存在,则替换并返回true,否则返回false
	V v = map.replace(Object key,Object value);
	//如果键存在,则替换并返回原值,否则返回null
	
posted @ 2022-03-13 13:19  北极光zzZ  阅读(31)  评论(0)    收藏  举报