A. java iterator循环遍历集合(比如HashSet)的原理
Iterator<String> it = set.iterator() 这时得到一个迭代器,它的指针位于第一个元素之前。
然后我们不停地 hasNext() 再 next 得到值,专当hasNext 为 false 时当然就不属能去 next 了。
这背后的位置索引是在迭代器内部记录着的,我们不能直接改它的值,只能 next 去下一个。
不过像 ListIterator 则是双向的,可以 previous。递增递减都是由 next / previous 方法来操作的。
B. 请问在Java 中如何Set集合中的对象具体步骤
import java.util.HashSet;import java.util.Set;
public class tes {
public static void main(String[] args) {
//set集合,元素是不重复的。通过equal判断是否相等
//如果是自定义的对象版,需要重写权equal和hashcode方法
Set set = new HashSet();
set.add("sina");
set.add("");
set.add("");
System.out.println(set.toString());
set.remove("");
System.out.println(set.toString());
}
}
======
结果:
[, sina]
[sina]
C. java,hashset,string一点问题为什么hashset可以识别String唯一性
因为你存储T类型的时候,set集合里面存储的是T的对象,你创建了三个对象t1,t2,t3,虽然这三个对象的id都是1,但是这三个对象是不同的对象,所以存在set里面会都存在。
而下面那个集合存储的是字符串,存在在s里面的时候就是比较的是字符串的值,由于你的s1,s2,s3的值是相同的,你虽然加了双引号,但是没有作用。给你看看样列,你应该就清楚了!
importjava.io.IOException;
importjava.util.HashSet;
importjava.util.Iterator;
importjava.util.Set;
publicclasstest{
publicstaticvoidmain(String[]args)throwsIOException
{
Set<String>s=newHashSet<String>();
s.add("1");
s.add("1"+"");
s.add(""+"1");//这里其实三个字符串的值是相同的。比较不能用==而要用equals
Iteratorit=s.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
}
运行结果1:
D. JAVA的集合类型有哪些
集合类型主要有3种:set(集)、list(列表)和map(映射)。
1、List(有序、可重复)
List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。
2、Set(无序、不能重复)
Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。
3、Map(键值对、键唯一、值不唯一)
Map集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。
(4)javahashsetapi扩展阅读:
JAVA集合类型四种常见输出方式:
1、Iterator:迭代输出,是使用最多的输出方式。
2、ListIterator:是Iterator的子接口,专门用于输出List中的内容。
3、foreach输出:JDK1.5之后提供的新功能,可以输出数组或集合。
4、for循环。
代码示例如下:
for的形式:for(inti=0;i<arr.size();i++){...}
foreach的形式:for(inti:arr){...}
iterator的形式:
Iterator it = arr.iterator();
while(it.hasNext()){ object o =it.next(); ...}
参考资料来源:网络:java集合类
E. Java集合框架的知识总结
说明:先从整体介绍了Java集合框架包含的接口和类,然后北京IT培训总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析。
1、综述
所有集合类都位于java.util包下。集合中只能保存对象(保存对象的引用变量)。(数组既可以保存基本类型的数据也可以保存对象)。
当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进行处理。从JDK1.5以后,这种状态得到了改进:可以使用泛型来限制集合里元素的类型,并让集合记住所有集合元素的类型(参见具体泛型的内容)。
Java的集合类主要由两个接口派生而亮清出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。
Set、List和Map可以看做集合的三大类。
List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。
Set集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是不能集合里元素不允许重复的原因)。
Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。
对于Set、List和Map三种集合,最常用的实现类分别是HashSet、ArrayList和HashMap三个实现类。(并发控制的集合类,以后有空研究下)。
2、Collection接口
Collection接口是List、Set和Queue接口的父接口,同时可以操作这三个接吵镇口。
Collection接口定义操作集合元素的具体方法大家可以参考API文档,这里通过一个例子来说明Collection的添加元素、删除元素、返回集合中元素的个数以及清空集合元素的方法。
3、两种遍历集合的方法Iterator接口和foreach循敬碰前环1、Iterator接口
Iterator也是Java集合框架的成员,主要用于遍历(即迭代访问)Collection集合中的元素,也称为迭代器。