集合框架map,List和set

一,UDP协议

  1.UDP协议使用DatagramSocket,ds对象可以用来接收和发送数据,不涉及IO流

  2.准备接收数据的时候需要指定端口号

  3.UDP协议不适合传递大数据,适合小而频繁的数据,若接收长度小于发送长度会出现丢包

  4.接发数据代码

    DatagramSocket ds = newDatagramSocket(7788);//绑定端口

    byte[] buf = new byte[1024];接收数组长度1024

    DatagramPacket packet = new  DatagramPacket(buf,buf.length);.//创建数据包对象

    ds.receive(packet);//接收数据包

    String data = new String(packet.getData(),0,packet.getLength());//由byte转为字符串String

 

    DatagramSocket ds = new DatagramSocket();//创建DatagramSocket对象

    String s = "Hello World";//定义一个字符串

    byte[] buf = s.getByte();//接收字节数组长度为1024

    DatagramPacket dp = new DatagramPacket(buf,buf.length,new InetSocketAddress("127.0.0.1",7788);//发送的数据包,参数需要有数据,数据长度,及ip和端口号

    ds.send(dp);//发送数据

二,集合set

  1.set中不能够添加重复性的数据.

  2.set没有办法根据下标取数据,即没有办法取出指定数据,要想使用set中的数据只能遍历

  3.set里面的数据是没有顺序可言的,无论你以什么样的顺序,向set中添加数据遍历取出的顺序都是不一定和添加的顺序一样.

  4.Hashcode:元素的哈希值是通过元素的hashcode方法 来获取的, HashSet首先判断两个元素的哈希值,如果哈希值一样,接着会比较equals方法 如果 equls结果为true HashSet就视为同一个元素。如果equals false就不是同一个元素.在IDEA中使用快捷键cmd+n,选择equals()&hashCode().把判断的属性勾选上即可.

  5.迭代器

    Set<Integer> set = new hashSet<>();//创建集合对象

    set.add(1); //添加元素

    set.add(2);

    Iterator<Integer> iterator = set.iterator();//将一个集合对象转为迭代器

    while(iterator.hasNext()){   //如果没有元素可取则iterator.hasNext()返回值为false,停止循环

      Integer i = iterator.next();//取出下一个元素

      if(i%2== 0){  //删除数组中的偶数

        iterator.remove();//用迭代器删除数据,不会涉及到索引的问题,安全行高

      }

 

    }

 

  1.   ---| Itreable      接口 实现该接口可以使用增强for循环  
  2.               ---| Collection     描述所有集合共性的接口  
  3.                     ---| List接口     可以有重复元素的集合  
  4.                            ---| ArrayList     
  5.                            ---|  LinkedList  
  6.                   ---| Set接口      不可以有重复元素的集合  
  7.                            ---| HashSet  线程不安全,存取速度快。底层是以哈希表实现的。

三,构造代码块

  1. 在类中直接用{}括起来的代码,叫做构造代码块.常用于初始化.

  2. 只在new对象的时候会执行,并且创建一次对象,就会执行一次

  3.    代码:

      public static void main(String[] args){

        show(new HashSet<Integer>(){{

          add(1);

          add(2);

        }});

      }

      public static void show(Set<Integer> set){

        for(Integer integer : set){

          System.out.prinln(integer);

        }

      }

四,集合:map接口中键和值一一映射. 可以通过键来获取值。map不具有可迭代性

  1.HashMap是一种key-value的数据模型,HashMap<K,V>

  2.遍历map的代码:

    Map<Integer String> map = new HashMap<>();

    map.put(1,"张三");//添加键值对

    map.put(2,"李四");//key是惟一的

    map.put(3,"张三");//value可以对应多个key

    map.put(1,"王五");//将key为1的键重新赋值value为王五

    Set<Integer> integers = map.keySet();//将key集合到set,方可进行遍历

    for(Integer integer : Integers){

      String value = map.get(Integer);//通过键key取值value

    }

posted on 2018-04-23 20:20  北冥丶中郎将  阅读(141)  评论(0编辑  收藏  举报