黑马程序员技术交流社区
标题:
Map中的values方法
[打印本页]
作者:
湛添友
时间:
2014-4-13 10:13
标题:
Map中的values方法
我知道返回值是collection,但是我不知道为什么是直接创建一个引用collection的对象来获取map.value();的。collection不是接口么,而map没有实现了collection接口。两者间是如何联系的?还有为什么返回值是collection就用collection来创建一个对象来获取返回值?(这个问题似乎很傻,但是我总觉得有点蒙蒙,似懂非懂的样子。。)
ArrayList<String> al=(ArrayList)map.values();这个我可以理解
Collection<String> c=map.values(); 并没有向下转型 我觉得这就是
Collection<String>c=new Collection<String>();而这是不允许的吧?
作者:
Sniper_qiu
时间:
2014-4-13 10:31
首先你要区分map和collection的区别。
1,
Map中一次存储是键值对。
Collection中一次存储是单个元素。
2,
Map的存储使用的put方法。
Collection存储使用的是add方法。
3,
Map的取出,是讲Map转成Set,在使用迭代器取出。
Collection取出,使用就是迭代器。
4,
如果对象很多,必须使用容器存储。
如果元素存在着映射关系,可以优先考虑使用Map存储或者用数组,
如果没有映射关系,可以使用Collection存储。
其次,在返回值的类型时候有规定,被定义的数据类型必须一致才能被返回。若不是,则会出错。
作者:
yanzhendong
时间:
2014-4-13 11:53
可以通过接口来操作实现接口的类的对象,假如一个类实现了多个接口,可以以不同的接口来操作他,其实并没有生成接口对象,只是用这个接口来操作实现这个接口的类的对象,给你一段示例代码,这个类实现了两个接口,那么可以用这两个接口来操作这个类:
public class InnerClass {
public static void main(String[] args) throws IOException {
mytest mytest=new mytest();
test1 t1=mytest;
test2 t2=mytest;
t1.showtest1();
t2.showtest2();
}}
interface test1{
void showtest1();
}
interface test2{
void showtest2();
}
class mytest implements test1,test2{
@Override
public void showtest1() {
System.out.println("interface test1");
}
@Override
public void showtest2() {
System.out.println("interface test2");
}
}
复制代码
你好好体会一下就行了。
作者:
yanzhendong
时间:
2014-4-13 12:15
建议楼主把多态那部分仔细看一遍就懂了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2