学习总结二

2018年8月16 日

常用对象总结:

抽象类(abstract)

抽象方法的声明格式为:

abstract void methodName();

抽象类和普通类的主要区别

   抽象方法必须为 public 或 protected

(因为 private ,不能被子类继承,子类便无法实现该方法)

抽象类默认为public

接口(interface)

接口的格式为:

修饰符 interface 接口名 {}

1.接口中只能出现常量 ,抽象方法。

2.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的。

3.接口中没有构造方法,不能被实例化。

4.类是单继承,但是接口和接口之间可以多继承。

5.接口是多实现,一个类可以实现多个接口(这里的实现可以等同看作"继承”)。

6.实现的关键字:implements

7.一个非抽象类实现一个接口,则必须将接口中所有的方法实现

Java集合

数组(Array)定义:相同类型数据的集合。数组分为一维数组(主要掌握),二维数组。

使用new来创建数组对象;

int [] a=new int[]()数组元素中的个数];

int [] a=new int{1,2,3};直接初始化数组或者int[] a={1,2,3};

遍历方法:如下

     int[] a=new int[]{1,2,3,4,5};

System.out.println("用for循环输出数组中的值");

          for(int i=0;i<a.length;i++){

       System.out.println(a[i]);

}

数组冒泡排序方法;

    for(int i=0;i<a.length;i++){

        for(int j=0;j<a.length-1;j++){

              if(a[j]>a[j+1]){

              int temp=a[j];

               a[j]=a[j+1];

              a[j+1]=temp;

}

}

}

System.out.println(Arrays.toString(a));

List:有序,可重复

ArrayList&LinkedList的区别

ArrayList底层通过数组实现,数组因为可以通过下标访问成为一个随机访问第n个数效率很高的数据结构,随机访问查询的时间复杂度是O(1),而删除/增加新的元素到某个位置时,需要一个一个的移动数组中的元素直至适合的位置,所以时间复杂度是O(n);

LinkedList底层由双向链表实现,在链表中插入元素时,只需要改变插入位置前后结点的结点指向和添加新元素的结点指向即可,时间复杂度是O(1),在访问元素的时候,无论是随机方位第几位的元素还是查询某个定值时,链表的时间复杂度均为O(n)。

ArrayList适用于随机访问的场景,查询使用较多,增删较少,而LinkedList则适用于频繁随机位置删除和插入的场景,查询较少使用。

List list =new ArrayList();

add();//list增加的方法,例子:list.add("三妹");

add.(  ,  );//插入到指定的位置,例子:list.add(2, "周");

remove();//删除的方法,例子:list.remove("三妹");

list.get();//获取数据的方法,列子:list.get(I);

lsit遍历方法(掌握for以及iteraor两种方法)

例子:list.add("小明");

           list.add("小花");

  System.out.println("以下为for循环遍历方法");

        for(int i=0;i<list.size();i++){

                  System.out.println(list.get(i));

}

  System.out.println("以下为iteraor遍历方法");

       Iteraor it=list.iteraor();

       while(it.hasNext()){

         int b=(int) it.next();
            System.out.println(b);

}

set;无序,不可重复

HastSet 和 TreeSet 是Set的两个实现类;

HashSet依赖于HashMap,它实际上是通过HashMap实现的。HashSet中的元素是无序的。

TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。TreeSet中的元素是有序的。

Map

HashMap(掌握)、Hashtable(掌握)、LinkedHashMap和TreeMap(实现类)

HashMap是最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。因为键对象不可以重复,所以HashMap最多只允许一条记录的键为Null,允许多条记录的值为Null,是非同步的。

Hashtable与HashMap类似,是HashMap的线程安全版,它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢,它继承自Dictionary类,不同的是它不允许记录的键或者值为null,同时效率较低。

LinkedHashMap保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时,先得到的记录肯定是先插入的,在遍历的时候会比HashMap慢,有HashMap的全部特性。

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。不允许key值为空,非同步的;

Map map=new HashMap();

map.put(key,value); //添加值方法,例子map.put(1,2)

遍历方法(掌握此种方法即可):例子:

              map.put(1,2);

               map.put(3.4)

    Iterator it = map.entrySet().iterator();

    while(it.hasNext()){

    Entry e =(Entry) it.next();

    System.out.println("键"+e.getKey () + "的值为" + e.getValue());

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值