编程第四周的日常<一>

容器

  • --装其他对象的对象。
  • --Collection 所有容器的父类接口。
  • --容器里面只放对象类型的引用,不能放基本数据类型。
  • java 5 以后,向容器中放基本数据类型时,会引入自动装箱机制,将其自动装箱(auto-boxing),所谓自动装箱就是将基本数据类型处理成对应的包装类型。例如:list.add(1000);<==> list.add(new Interger(1000));

List();

  • 创建 List list = new ArrayList<>(); 使用容器时一定要写上泛型参数。
    容器里面只能放对象类型的引用,不能放基本的数据类型。(基本数据的包装类)(List常用的实现类有ArrayList和LinkedList)

  • 1、ArrayList();
    底层实现是一个数组,使用连续的内存,可以实现随机存取。

  • 2、LinkedList();
    底层实现是一个双向循环链表,可以使用碎片内存,不能随机存取,但是增删元素需要修改引用即可,所以增删元素有更好的性能。

  • 3、用迭代器去遍历对象。
    Iterator iterator = list.iterator(); //拿到一个迭代器对象。
    while(iterator.hasNext()){
    System.out.println(iterator.next());
    }

  • 4、使用foreach对容器里的元素进行遍历。
    list.forEach(System.out::println); //容器元素的遍历 。

  • 5、使用foreach加Lambda表达式对容器里的元素进行遍历。
    list.forEach(e ->{ //e - 容器内的每一个对象
    System.out.println(e.toUpperCase());
    }); //forEach 是只读循环。


Set();

  • 不存在重复的元素在里面
  • 注意:没有get();方法,因为没有有序的排列,无法找出确定的元素。
    删除不能给索引,因为是集合,没有按下表存取元素的方法。
  • 1、HashSet)();
    灰常重要的一点:必须重写 HashCode();和equals();两个方法。使用程序自动产生
    好的哈希函数(单向哈希函数):不同的对象尽可能产生不同的哈希码。
    如果要使用HashSet那么一定要重写两个方法:
    -- HashCode() --->让相同的对象产生相同的哈希码,让不同的对象尽可能产生不同的哈希码。
    --equals() --->定义比较两个对象的规则-先比引用、再比类型、其次比属性。(只比相等或不等)
    ~自反性
    ~对称性
    ~传递性
    ~一致性
  • 2、TreeSet();
    去重和排序
    最好要重写 compareTo();方法。以实现TreeSet();的排序功能。
    一种比较的写法:
    public int compareTo(student o) {
    if (this.name.compareTo(o.name) == 0) {
    return this.age - o.age;
    }else{
    return this.name.compareTo(o.name) ;
    } }

Map

  • K - 此映射所维护的键的类型
    V - 映射值的类型
  • .put(K key,V value);放东西
    .remove(Object Key);删除
  • 两个实现的版本
    1、HashMap();注意要重写:.HashCode();和.equals();
    2、TreeMap();注意可能要重写:comparableTo();

泛型

  • 通过<>接受一种引用数据类型,在编译程序时,会使用该类型检查集合中存储的对象是否是该类型,如果不是,不通过。从而把运行时的问题转移到编译时期,提高了程序的安全性。
  • 泛型擦除:泛型是用在编译时期的,编译完之后的.class文件中是不存在泛型的。
就地实例化
Lambdar表达式
适配模式

你可能感兴趣的:(编程第四周的日常<一>)