题目1:Hashtable、HashMap、javabean之间的区别?Hashtable和javabean的效率哪个更高?
题目2:oracle、mysql中的group by的区别是什么?PS:以前只听说过Hashtable和HashMap之间的区别,这次的面试题目不知咋搞的多出来一个javabean。
题目2:oracle、mysql中的group by的区别是什么?PS:以前只听说过Hashtable和HashMap之间的区别,这次的面试题目不知咋搞的多出来一个javabean。
题目2:如果从执行原理上讲,完全不知道。不过我知道Oracle的group by用法比较多有ROLLUP,CUBE等等
好像mysql没有这些东西,mysql的group by好像只能使用max和min函数。
select
count(u.username),r.rname,r.rid,r.pid
from
room r,user1 u
where
r.pid=u.id
group by
r.rid,r.pid这里r.rname并没有出现在group by子句、聚合函数中,但是MYSQL中仍然能够执行、列出数据。
当然在oracle中是不行的。上面的代码出处:http://blog.csdn.net/jackpk/archive/2008/11/07/3247242.aspx
map.put("id", "1");
map.put("name", "Tom");
map.get("id");
map.get("name");
Emp emp = new Emp()
emp.setId("1");
emp.setName("Tom");
emp.getId();
emp.getName();哪个效率高?2、区别大概就是你说的了,select的字段可以在group by里没有,默认取第一行。mysql的grouop by不合标准,虽然可以这么用,但是一般还是尽量避免。
但是效率实在是想不出来怎么说明。
Map与JavaBean的区别,JavaBean的属性即getter/setter,需要事先定义(当然可以只定义getter/setter,不定义Field,我就经常用这个特性暗渡陈仓)。而Map的属性名就是名值对中的Key,但是map.123好像只认key="123"(String)而不认key=123(int)
1.Hashtable和HashMap Hashtable线程安全 HashMap不是线程安全
2. Hashtable、HashMap和Javabean 前两个要存取某个属性值,首先得计算hash值,然后才能根据地址存取属性值(当然还可能要处理地址冲突) 而javabean是直接根据地址存取属性的效率方面:从上面两来看,当然是javabean高于Hashtable、HashMap了
你个鸟人,怎么也说GOOD LUCK啊,我记得这上面有一个家伙是GOOD LUCK的专用户,二话不说,GOOD LUCK是必须的。哈哈
因为HashTable线程安全 效率要低一点
都用来存储键-值对。但是javaBean用来描述一个具体的业务对象,而map则更侧重于描述一个同类事物集合。他们保存值的方式也是不一样的。
但是存取的效率的话,我认为map更高。只是直觉,等大鸟来分析。题目2:
select
count(u.username),r.rname,r.rid,r.pid
from
room r,user1 u
where
r.pid=u.id
group by
r.rid,r.pid即使不将r.rname放如group中,执行的时候可能也自动加进去了。
否则没有办法得到结果的。或者说得到的结果是不合逻辑的。
所以我认为,仅仅是语法上的区别。功能上没有实质的区别。
呵呵,这位兄弟,在不知道这题目考察是考察啥玩意之前,最好还是不要自己妄下定论。
因为我知道HashMap和Hashtable之间的区别,所以就写了它们的区别,至于javabean,我只能写何为javabean,它的3要素。至于效率我是压根我不知道。
在这里要感谢11楼和12楼,尤其是12楼的回复,感觉很不错。请问11楼的shine333,你说的“不定义Field,我就经常用这个特性暗渡陈仓”是什么意思???
不定义属性?
想必是只定义getXyz方法,而不定义xyz变量。将来在用的时候,如EL表达式里${obj.xyz }直接使用。
你只定义getXyz方法,那里面的属性哪来的?
get总价() {
return 单价 * 总价;
}
public class A {
private int status; // getter/setter
public boolean isEditable() {
switch (status) {
case CONST_1:
case CONST_2:
case CONST_5:
return true;
default:
return false;
}
}
}
还有做报表的时候,那些城市合计、区域合计、全国合计的,我会利用以下特性public class X {
private BigDecimal income = BigDecimal.ZERO; // getters/setters;
private Integer cityId;
private Integer regionId;
public void setNextIncome(BigDecimal nextIncome) {
this.income = this.income.add(nextIncome);
}
}来ORM对应的SQL
SELECT sum(amount) AS nextIncome,
cityId,
regionId,
FROM xxxx
WHERE ....
GROUP BY cityId, regionId
还有shine333兄,你的代码还是定义了属性的。还是有对应的getter、setter方法。
注意属性property和字段field的区别
1:在实际开发中,你不用写get和set方法;
2:还是写了,但在这里贴代码的时候省略了是哪个意思?
javabean只相当于一个固定了key的一个键值对
比如setName相当于Map的set("name",xxx);
效率可能Map高些,
但可读性可维护性来说,javabean都是不二的选择。第2个问题直接说“对不起,我不知道”good luck
private int status;
public int getStatus() {
return this.status;
}
public void setStatus(int status) {
this.status = status;
}
public boolean isEditable() {
switch (status) {
case CONST_1:
case CONST_2:
case CONST_5:
return true;
default:
return false;
}
}
public boolean isAppendable() {
switch (status) {
case CONST_1:
case CONST_2:
case CONST_3:
return true;
default:
return false;
}
}
public boolean isCancellable() {
switch (status) {
case CONST_4:
case CONST_5:
case CONST_6:
return true;
default:
return false;
}
}
}现在A有1个Field:status,和4个property:status, editable, appendable, cancellable
对于javabean和map,
我感觉如果本来就是不同的概念,但非要拿在一起比较我,也是可以的!
比如要使用一个学生信息可以有两种方式
1)使用javabean:
Student s = new Student();
s.setName() s.getName() 姓名
s.setSex() s.getSex() 性别
s.setTeacher() s.getTeacher() 老师
2)使用Map:
Map m = new HashMap()
m.put("name","张三");
m.put("sex","1");
m.put("teacher","王老师");上面两种都可以实现对一个学生信息的存取,使用起来都比较方便,以前在项目中这样用过很多次,不过还没真没考虑过他们之间来个比较。。
感觉对效率而言,感觉应该是Hashtable<javabean<HashMap
个人认为:首先线程案例一般是最慢的,HashMap是封装的高效集合类,应该比普通java类快些以上纯属个人理解,有不对地方请指正,谢谢
按照存取效率来说的话,javabean的效率是比map高。
效率不是问题,
主要是可读性。
我觉得,
回答面试问题可能被直接枪毙了。呵呵至少Hashtable是线程安全的,速度应该慢些吧。good luck
我一直也是这么认为的不过看大家的讨论的 我开始怀疑我对javabean的了解程度了 可怕....