抽象类练习和集合概念区分

写一个抽象类,包括类shape,其中定义competeArea(float r);写两个子类(正方形Square、圆Circle),在其中实现对父类方法的重写;

测试类Test,用父类对象的引用指向子类的实例,用该引用去调用相应的方法。

public abstract class Shape {
    abstract float area();
    //因为难找到一个共性,只能抽象出一个面积。             
/* 这里面可以有其它的普通方法,但若抽象方法,
无大括号和方法体,不可以修饰构造器和属性。
接口不能有其它的普通方法,其中有的抽象方
法用于重写*/
} class Circle extends Shape{ public int r; public Circle(int r){ this.r=r; } /* public int getR(){ return r; } public void setR(int r){ this.r=r; } //想给他赋值就用u.setXXX(); 取这个类的对象的某个值 就get,而这里是用数组对象来赋值,用for遍历并计算面积 */ public float area(){ float s=(float) (3.14*r*r); System.out.println("半径为"+r+"的圆形面积为:"+s); return s; } } class Square extends Shape{ public int a,b; public Square(int x,int y){ a=x; b=y; } public float area(){ float s=(float) (a*b); System.out.println("长宽分别为"+a+","+b+"的长方形面积为"+s); return s; } } public class AbstractArray{ public static void main(String[] args) { float area=0; Shape[] s={new Circle(3),new Circle(4),new Square(1,2),new Square(3,4)}; for (int i=0;i<s.length;i++){ area+=s[i].area(); } System.out.println("图形总面积为"+area); } }

ArrayList/Linklist/Vector的特点分别是什么?HashMap和HashTable的区别?

       ArrayList是动态的数组,可动态地变化数组的长度,由于内部用数组实现的,所以,

索引起来很方便,但不易增删,因为要挪动元素。

       LinkList内部实现是用双向链表,即每个节点存放着两个变量或引用(上一节点或下

一节点的引用)。

       Vector类和ArrayList类似,内部也是动态地存储对象,提供的元素的操作方法和ArrayList

类似。不同的是,Vector提供了一种返回元素枚举对象的elements()方法,这个枚举接口也提

供了类似Iterator的功能,可以用强循环迭代所有元素,且从线程的角度来看它是同步的,即安

全,但相对效率较低。

 

       HashMap是用Set类的方法进行存放对象,所以用“键”取值的效率比较高。另外,说说

LikeHashMap,它是HashMap的子类,它是采用内部是采用双向链表,可以有序地存放对象。

       HashMap和HashTable类似也是用Hash方法对值进行索引,且性能差异不大,区别在于:

       1.HashMap最多只允许有一条记录为空,但HashTable不允许键值为空。

       2.HashMap把HashTable的contains方法去掉,改为了containsValue和containsKey。

HashMap是java1.2引进来的,而HashTable是继承自Dictionary类。

       3.HashMap是不支持同步的,所以不安全,而Hashtable是同步的,不需要额外的增加

同步机制,而HashMap需要。

       4.HashMap用Iterator进行遍历,HashTable用Enumeration进行遍历。

       5.HashMap和HashTable的默认Hash数组大小不一样。

       6.Hash值使用的不同,HashTable直接使用对象的HashCode。

 

另外,HashMap插入和删除无固定顺序,是随机的,它适合插入、删除、定位等,若要讲顺序,

最好用TreeMap。而LinkHashMap是HashMap的子类,且输出输出顺序相同,可按读取顺序来

排列。

转载于:https://www.cnblogs.com/shijinglu2018/p/8470830.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值