欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于java中集合的概念(详解)

程序员文章站 2024-02-27 16:28:51
1.集合是储存对象的,长度可变,可以封装不同的对象 2.迭代器: 其实就是取出元素的方式(只能判断,取出,移除,无法增加) 就是把取出方式定义在集合内部,这样取出方式就...

1.集合是储存对象的,长度可变,可以封装不同的对象

2.迭代器: 其实就是取出元素的方式(只能判断,取出,移除,无法增加)

就是把取出方式定义在集合内部,这样取出方式就可以直接访问集合内部的元素,那么取出方式就被定义成了内部类.

二每一个容器的数据结构不同,所以取出的动作细节也不一样.但是都有共性内容判断和取出,那么可以将共性提取,这些内部类都符合一个规则iterator

iterator it = list.iterator();
while(it.hasnext()){
system.out.println(it.next());
}

另一种是

for(iterator it = it.iterator(); it.hasnext();){
system.out.printin(it.next());}

collection:

(1).list:元素是有序的,元素可以重复.因为改集合体系有索引.

!--arraylist:底层的数据结构使用的是数组结构 ,特点:查询速度快,但是增删慢.线程不同步

!--linkedlist:底层使用的是;链表数据结构,特点:增删速度快,查寻速度慢.

!--vector:底层的数据结构使用的是数组结构 ,.线程同步,速度慢,被arraylist替代l

list:特有方法,凡是可以操作角标的方法都是该体系特有的方法

增:add(index,element); addall(index,collection);

删:remove(index);

改:set(index,element);

查:get(index); sublist(from,to); listiterator();(重点)

注意:判断同一对象,equals方法

public boolean equals(object obj){
if(!(obj instanceof person))

return false;
person p=new person();

return this.name.equals(p.name)&&this.age==p.age;

}

(2). set:元素是无序的(元素存入和取出的顺序是不一定一致的),不可以重复

!--hashset:底层数据结构是哈希表

hashset使如何保证元素唯一性的呢?

是通过元素的两个方法,hashcode和equals来完成

如果元素的hashcode相同才会判断equals是否为true,反の,不会调用

对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法

!--treeset:

--------------------------------------------------------------------

1.toarray()方法:是遍历用的(把集合转变为数组)

public class toarray {
public static void main(string[] args) {
collection c=new arraylist();
c.add("hello");
c.add("world");
c.add("java");
 
object[] obj=c.toarray();
for(int x=0;x < obj.length;x++){
system.out.println(obj[x]);
}
}
}

1.1aslist()方法,把数组转变为集合

//定义一个数组
//string[] s={"hello","world","java"};
//list<string> list=arrays.aslist(s);
//直接引用
list<string> list=arrays.aslist("hello","world");
for(string s1:list){
system.out.println(s1);
}

注意:虽然他可以把数组转变成集合,但是本质是数组,所以他的长度不能改变,不能增删

2.数组长度是length方法,字符串的长度是length(),集合求长度的方法是size.

3. iterator迭代器是集合的特有遍历方法

while方法:(习惯用法)

iterator it=list.iterator();//list是集合
while(it.hasnext()){ //判断是否有下一个数据
system.out.println(it.next());
}

for循环方法:(效率高,it用完就是垃圾)

for(iterator it=c.iterator();it.hasnext();){
system.out.println(it.next());
}

注意:不能连续it.next(),使用一次就换一个对象

4.list集合特有的遍历方法:就是size和get()的结合

for(int x=0; x<list.size();x++){
system.out.println(list.get(x));
}

5.list特有的迭代器

listiterator<string> lit=list.listiterator();
while(lit.hasnext()){
system.out.println((string)lit.next());
}
while(lit.hasprevious()){
system.out.println((string)lit.previous());
}

注意:listiterator可以实现逆向遍历,但是必须现正向遍历,否则无意义

6.hashtable和hashmap的区别

hashtable:线程安全,效率低,不允许null建和null值.

hashmap:线程不安全,效率高,允许null建和null值.

7.collection和collections的区别?

collection:是单列集合的顶层接口,有子接口list和set

collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法

8.二分查找找不到,返回 -(最大索引+1)

以上这篇基于java中集合的概念(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。