Java集合类图,java集合实现
如何解决写爬虫IP受阻的问题?立即使用。
java类详解:(推荐:java视频教程)
1.java集合类图
在上面的类图中,实线边框是实现类,如ArrayList、LinkedList、HashMap等。虚线边框是抽象类,比如AbstractCollection,AbstractList,AbstractMap等。而虚线边框是接口,比如集合、迭代器、列表等。
发现上述集合类都实现了迭代器接口,迭代器接口是遍历集合中元素的接口,主要包括hash next()、next()和remove()三种方法。
它的一个子接口LinkedIterator给它添加了三个方法,分别是add(),previous()和hasprevious()。也就是说,如果首先是迭代器接口,那么在遍历集合中的元素时,只能向后遍历,被遍历的元素不会再被遍历。通常,这个接口是由无序集合实现的。
如HashSet、HashMap;但是那些有有序元素的集合一般实现LinkedIterator接口,实现这个接口的集合可以双向遍历,可以通过next()访问下一个元素,也可以通过previous()访问上一个元素,比如ArrayList。
另一个特点是使用抽象类。如果要自己实现一个集合类,实现那些抽象接口会很麻烦,工作量很大。这时候就可以用抽象类了,抽象类给我们提供了很多现成的实现。我们只需要根据自己的需要重写一些方法或者增加一些方法来实现我们需要的集合类,工作流程大大减少。
2.详细说明
2.1哈希集
HashSet是Set接口的子类。它的主要特点是:里面不能存储重复的元素,采用哈希存储方式,没有顺序。这里,没有顺序意味着元素插入的顺序与输出的顺序不一致。
代码示例:HashSetDemo
包edu . sjtu . erplab . collection;
导入Java . util . hashset;
导入Java . util . iterator;
导入Java . util . set;
公共类HashSetDemo {
公共静态void main(String[] args) {
SetString set=new HashSetString();
set . add( a );
set . add( b );
set . add( c );
set . add( c );
set . add( d );
//使用迭代器输出集合
iterator string ITER=set . iterator();
while(iter.hasNext())
{
system . out . print(ITER . next() );
}
system . out . println();
//用于要组合的每个输出
for(字符串e:集合)
{
system . out . print(e );
}
system . out . println();
//使用toString输出集合
system . out . println(set);
}
}代码示例:SetTest
包edu . sjtu . erplab . collection;
导入Java . io . file inputstream;
import Java . io . filenotfoundexception;
导入Java . io . inputstream;
导入Java . util . hashset;
导入Java . util . iterator;
导入Java . util . scanner;
导入Java . util . set;
公共类设置测试{
公共静态void main(String[] args)引发FileNotFoundException {
SetString words=new HashSetString();
//通过输入流打开文献
//方法1:这个方法不需要抛出异常
InputStream inStream=set test . class . getresourceasstream( Alice . txt );
//方法二:这个方法需要抛出异常
//InputStream inStream=new file InputStream( D:\ \ Documents \ \ workspace \ \ Java study \ \ src \ \ edu \ \ sjtu \ \ ERP lab \ \ collection \ \ Alice . txt );
Scanner in=新扫描仪(inStream);
while(in.hasNext())
{
words . add(in . next());
}
iterator string ITER=words . iterator();
for(int I=0;i5;我)
{
if(iter.hasNext())
system . out . println(ITER . next());
}
system . out . println(words . size());
}
} 2.2数组列表
数组列表是目录的子类,它和哈希特想法,允许存放重复元素,因此有序。集合中元素被访问的顺序取决于集合的类型。如果对数组列表进行访问,迭代器将从索引0开始,每迭代一次,索引值加1。然而,如果访问哈希特中的元素,每个元素将会按照某种随机的次序出现。虽然可以确定在迭代过程中能够遍历到集合中的所有元素,但却无法预知元素被访问的次序。
代码实例:ArrayListDemo
包edu。上海交通大学。erplab。收藏;
导入Java。util。ArrayList
导入Java。util。迭代器;
导入Java。util。列表;
公共类ArrayListDemo {
公共静态void main(String[] args) {
ListString arrList=new ArrayList string();
arrlist。添加( a );
arrlist。添加( b );
arrlist。add( c );
arrlist。add( c );
arrlist。add( d );
//使用迭代程序输出集合
迭代器字符串ITER=数组列表。迭代器();
while(iter.hasNext())
{
系统。出去。打印(ITER。next()“”);
}
系统。出去。println();
//使用对于每个输出结合
对于(字符串e:arrList)
{
系统。出去。打印(e );
}
系统。出去。println();
//使用转换对象为字符串输出集合
系统。出去。println(arr list);
}
}2.3列表迭代器
列表迭代器是一种可以在任何位置进行高效地插入和删除操作的有序序列。
代码实例:LinkedListTest
包edu。上海交通大学。erplab。收藏;
导入Java。util。ArrayList
导入Java。util。迭代器;
导入Java。util。列表;
导入Java。util。列表迭代器;
公共类LinkedListTest {
公共静态void main(String[] args) {
ListString a=new ArrayList string();
答。添加( a );
答。添加( b );
答。add( c );
系统。出去。println(a);
ListString b=new ArrayList string();
乙。add( d );
乙。添加( e );
乙。添加( f );
乙。添加( g );
系统。出去。println(b);
//ListIterator在迭代程序基础上添加了添加(),上一个()和hasPrevious()方法
ListIteratorString aIter=a . list iterator();
//普通的迭代程序只有三个方法,hasNext(),Next()和移除()
迭代器string bIter=b . iterator();
//b归并入a当中,间隔交叉得插入b中的元素
while(bIter.hasNext())
{
if(aIter.hasNext())
艾特。next();
艾特。补充(biter。next());
}
系统。出去。println(a);
//在b中每隔两个元素删除一个
bIter=b . iterator();
while(bIter.hasNext())
{
咬人。next();
if(bIter.hasNext())
{
咬人。next();//移除跟然后是成对出现的,移除总是删除前序
咬人。移除();
}
}
系统。出去。println(b);
//删除a中所有的b中的元素
答。删除所有(b);
系统。出去。println(a);
}
} 2.4散列表
模拟的存取实现
//存储时:
int hash=key。hashcode();//这个散列码方法这里不详述,只要理解每个键的混杂是一个固定的(同国际组织)国际组织值
int index=hash % Entry[].长度;
条目[索引]=值;
//取值时:
int hash=key。hashcode();
int index=hash % Entry[].长度;
返回条目[索引];2.5WeekHashMapDemo
包edu。上海交通大学。erplab。收藏;
导入Java。util。弱散列表;
公开课WeekHashMapDemo {
公共静态void main(String[] args) {
int size=100
如果(参数长度0) {
大小=整数。parse int(args[0]);
}
Key[] keys=新密钥[大小];
weakashmapkey,Value whm=new WeakHashMapKey,Value();
for(int I=0;我尺寸;i ) {
Key k=新密钥(整数。tostring(I));
值v=新值(整数。tostring(I));
if (i % 3==0) {
keys[I]=k;//strong引用
}
whm.put(k,v);//所有键值放入弱哈希映射中
}
系统。出去。println(whm);
系统。出去。println(whm。size());
系统。GC();
尝试{
//把处理器的时间让给垃圾回收器进行垃圾回收
线程。睡眠(4000);
} catch (InterruptedException e) {
e。printstacktrace();
}
系统。出去。println(whm);
系统。出去。println(whm。size());
}
}
类别密钥{
字符串id;
公钥(字符串id) {
this.id=id
}
公共字符串toString() {
返回id;
}
public int hashCode() {
返回id。hashcode();
}
public boolean equals(Object r) {
返回(键的r实例)id。等于.id);
}
公共void finalize() {
系统。出去。println(完成键 id);
}
}
类别值{
字符串id;
公共值(字符串id) {
this.id=id
}
公共字符串toString() {
返回id;
}
公共void finalize() {
系统。出去。println(最终确定值 id);
}
}比较
更多爪哇岛相关文章请关注爪哇基础教程栏目。以上就是爪哇岛集合类图文教程的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。