笔记

udp:
 不需要建立链接既可以作为发送方也可以作为接收方
 数据包大小有限制(64k)  效率高  不安全

 使用的socket对象:
  DatagramSocket: 数据报包套接字  既可以作为接收方  发送方的socket对象
  指定一下端口  不指定端口 默认分配端口

  send(DatagramPacket);
  receive(DatagramPacket);


 DatagramPacket:发送和接收的数据信息
  通过不同的构造器 创建不同的包对象
   发送包 :执行InetAddress ,端口
   接收包 :指定接收的字节数组 以及长度  DatagramPacket  数据  发送方的ip  端口。。。

URL:
 统一资源定位符
 openConnection();---》 URLConnection:
 URLConnection:
  connect(); 建立链接
  getInputStream();--》通过输入流 读取当前链接中的数据信息
  getOutputStream();


api:application programing interface 别人写好实现[网络资源]。对外提供接口(url地址)。
  通过学习接口的规则(使用已知的url 发送一个请求到对应的服务下)。api 会经过自己的服务器,返回给调用者一个结果。


集合:
 1、一张图:
  Collection(无序 可重复)                            Map(一对)
  /                                             /      
   Set               List(有序,可重复)             HashMap     TreeMap
 /         /        
HashSet   TreeSet    ArrayList   LinkedList

 2、三个知识点:
  a、Iterator:迭代器  是一个接口   next();hasNext();remove();
              迭代过程中小心并发修改异常
              迭代集合元素时,不同的实现类中,其实内部维护了一个对应的实现类。
              通过iterator方法 返回当前创建的实现类对象 对当前集合进行迭代
  b、泛型:
   泛型类
   泛型方法
   泛型接口

   宽泛的类型  这个类型的确定依赖于:
     1、创建某个类的对象  直接指定泛型的类型
     2、调用具体方法时 确定其泛型类型
   泛型的定义:
    <T> <E>
  c、比较器:
    内部比较器:
     当前比较的类 实现Comparable 接口  重写compareTo方法
       定义好之后 如果需求更改 必须要重写
    外部比较器:
     创建集合对象时 指定比较器
      比较器需要实现java.util.Comparetor接口 重写compare(t1,t2)方法。
      根据用户需求重复定义 满足要求的比较器
      可以通过匿名内部类实现

   3、六个接口:
     a、Collection:
       存储元素的特点:无序 可重复
       常见方法:add(Object) remove(Object); iterator();size();clear();
           addAll(Coll). removeAll(Coll); isEmpty(); retainAll();
           contains(Object);containsAll(Coll)
       遍历方式:
          foreach()  iterator

     b、List:
       存储元素的特点:有序 可重复
       常见方法:add(Object) remove(Object); iterator();size();clear();
           addAll(Coll). removeAll(Coll); isEmpty(); retainAll();
           contains(Object);containsAll(Coll)
           多了一些对于索引的操作:
           get(index); set(index,Object); add(index,Object);
           remove(index); remove(Object);

       遍历方式:
          foreach()  iterator  for   listIterator

     c、Iterable:
       java.lang.Iterable,foreach语句的目标。

     d、set:
       存储元素的特点:无序 唯一
       常见方法:add(Object) remove(Object); iterator();size();clear();
           addAll(Coll). removeAll(Coll); isEmpty(); retainAll();
           contains(Object);containsAll(Coll)
       遍历方式:
          foreach()  iterator
     e、Map:
       存储元素的特点:key-value
       key 无序唯一 相当于一个Set集合
       value 无序可重复 相当于一个Collection集合

       常见方法:
         put(k,v);返回集合中是否存在对应的k 如果存在 返回对应的值
         如果不存在 返回null
         remove(k);
         containsKey(k); containsVlues(v);
         get(k)
       遍历方式:
         遍历key: keySet()---> foreach/iterator
           entrySet()---> foreach/iterator + (获取到一个Entry)+getkey();
         遍历value:values()---> foreach/iterator
           entrySet()---> foreach/iterator +(获取到一个Entry)+
           getVlues();
           keySet()---> foreach/iterator+map.getKey(k)
           entrySet()---> foreach/iterator + (获取到一个Entry)+map.getKey(Entry.getkey());
         遍历key-value:
           keySet()---> foreach/iterator+map.getKey(k)
           entrySet()---> foreach/iterator + entry.getKey()/entry.getValue();
     Entry:
       内部维护了当前map集合中的所有元素。(键-值)。
       对外提供了获取键和值的方法 getKey() getValue()
       map的实现类中通过内部类 都实现了Entry。实现类的对象中存在当前
       map中的所有数据信息。


    4、9个常用类:
     ArrayList:
      底层实现方式: 
       数组(长度可变的)
      存储元素特点;
       遍历 随机访问 效率高   添加 删除效率低
      常见方法:
        add(Object) remove(Object); iterator();size();clear();
        addAll(Coll). removeAll(Coll); isEmpty(); retainAll();
        contains(Object);containsAll(Coll)
        多了一些对于索引的操作:
        get(index); set(index,Object); add(index,Object);
        remove(index); remove(Object);
      迭代方式:
      foreach()  iterator  for   listIterator

   LinkedList:
    底层实现方式: 
       链表
      存储元素特点;
       遍历 随机访问 效率低  添加 删除效率高
      常见方法:
        add(Object) remove(Object); iterator();size();clear();
        addAll(Coll). removeAll(Coll); isEmpty(); retainAll();
        contains(Object);containsAll(Coll)
        多了一些对于表头表尾的操作:
        getFirst(); getLast();
      迭代方式:
      foreach()  iterator  for   listIterator
   HashSet:
    底层实现方式: 
       哈希表 (数组[存储元素位置]以及链表[存储数据])
       1.8之后 如果执行了rehash算法  将链表转为红黑树(二叉树)
       线程不安全。ConcurrentHashXXX。去解决
      存储元素特点;
       遍历 效率高  添加 删除效率高
      常见方法:
        add(Object) remove(Object); iterator();size();clear();
        addAll(Coll). removeAll(Coll); isEmpty(); retainAll();
        contains(Object);containsAll(Coll)
        
      迭代方式:
      foreach()  iterator 
    注意:
     如果将自定义对象作为hashset存储的元素,要注意,自定义对象所属的类(new的对象肯定是唯一的,大多数业务逻辑中可能看的是当前对象中的属性是否一致)必须要重写hashCode(原来计算当前存储元素的位置) 以及equals(确保存储元素是否唯一)方法。
   TreeSet:
   LinkedHashSet:
   HashMap:
   TreeMap:
   Arrays:
    对于数组的工具类:
    sort();排序指定数组
    binarySearch();对于排好序的数组进行查找
   Collections:
    对于集合的工具类:
    sort();排序指定集合
    binarySearch();对于排好序的集合进行查找

原文地址:https://www.cnblogs.com/yxmgg/p/9052928.html