初学者学习集合类过程中的问题

fly的狐狸 2011-07-10 03:38:31
1、set和list都实现了collection接口,并且set不能有重复元素,而list可以有。我想了解一下set接口怎么就可以让元素不能有重复了,只想了解怎么做到的。
2、
Collection<String> collection = new ArrayList<String>();
collection.add("123");
System.out.println(collection.size());
这个add()、size()调用的是ArrayList的方法还是Collection的方法(我看eclipse上显示的是Collection),如果是Collection的那么Collection不是只是个接口么,应该没有实现方法啊~怎么还能打印出size等于1呢~

只想了解一下是怎么回事~!~
...全文
86 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-07-10
  • 打赏
  • 举报
回复
答:1、是通过hashcode和equals来使元素不能重复的。
2、是条用ArrayList方法,方法是在Collection接口中定义的。
ninghanping 2011-07-10
  • 打赏
  • 举报
回复
是ArrayList中的方法啊 因为他开辟了ArrayList的方法空间,她只是向上转型为Collection了,
勇哥聊IT 2011-07-10
  • 打赏
  • 举报
回复
Collection<String> collection = new ArrayList<String>();
既然ArrayList<String>类能转换成接口Collection<String>说明:
ArrayList<String>类实现了Collection<String>接口。

另外
ArrayList<String>类除了实现Collection<String>接口中的方法外,还可以扩展自己的方法。

建议使用JDK API作为参考手册
  • 打赏
  • 举报
回复
学习了
fly的狐狸 2011-07-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hongfei1992 的回复:]
LZ这个牵涉到了多态哦,编译的时候是根据定义的引用类型来确定的,而运行的时候是根据定义的引用所指向的对象来确定到底执行那个方法的。基础的书籍应该都有讲的。
[/Quote]
不太明白~看过基础书籍~但是还是不太理解。
fly的狐狸 2011-07-10
  • 打赏
  • 举报
回复

public class Test1 implements Test2{

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Test2 test =new Test1();
test.add();
}
public void add(){
System.out.println("Test1 add");
}

}

interface Test2{
public void add();
}

确实是你说的那样~但是能大概说说为什么么~!~
fly的狐狸 2011-07-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 javaxiaochouyu 的回复:]
可以查看JDK源码 你就知道了...
Eclipse里面可以查看的。
[/Quote]
jdk源码 接口只有方法没有实现啊~问题一还是不太了解。

[Quote=引用 2 楼 javaxiaochouyu 的回复:]
Collection<String> collection = new ArrayList<String>();
这是声明接口实现类,实际上是调用的ArrayList的方法...
[/Quote]
如果是arrayList方法这个是为什么呢?能简单说明一下么
自学吧 2011-07-10
  • 打赏
  • 举报
回复
LZ这个牵涉到了多态哦,编译的时候是根据定义的引用类型来确定的,而运行的时候是根据定义的引用所指向的对象来确定到底执行那个方法的。基础的书籍应该都有讲的。
Jeelon 2011-07-10
  • 打赏
  • 举报
回复
Collection<String> collection = new ArrayList<String>();
这是声明接口实现类,实际上是调用的ArrayList的方法...
Jeelon 2011-07-10
  • 打赏
  • 举报
回复
可以查看JDK源码 你就知道了...
Eclipse里面可以查看的。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧