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

 更新时间:2017年09月12日 08:58:20   作者:翊风  
下面小编就为大家带来一篇基于java中集合的概念(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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中集合的概念(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • springboot集成mybatisplus的详细步骤

    springboot集成mybatisplus的详细步骤

    MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生,这篇文章主要介绍了springboot四步集成mybatisplus,需要的朋友可以参考下
    2022-10-10
  • SpringBoot读取resource目录下文件失败的原因及解决方案

    SpringBoot读取resource目录下文件失败的原因及解决方案

    在idea中运行时,有些resource下文件读取工具类能够正常获取读取到文件,但是通过java–jar的方式去运行jar包,此时resource下文件读取工具类读取文件就失效了,本文就给大家介绍一下SpringBoot读取resource目录下文件失败解决方案,需要的朋友可以参考下
    2023-08-08
  • java8 Stream大数据量List分批处理切割方式

    java8 Stream大数据量List分批处理切割方式

    这篇文章主要介绍了java8 Stream大数据量List分批处理切割方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 详解SpringBoot 创建定时任务(配合数据库动态执行)

    详解SpringBoot 创建定时任务(配合数据库动态执行)

    本篇文章主要介绍了SpringBoot 创建定时任务(配合数据库动态执行),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • MyBatis-Plus详解(环境搭建、关联操作)

    MyBatis-Plus详解(环境搭建、关联操作)

    MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生,今天通过本文给大家介绍MyBatis-Plus环境搭建及关联操作,需要的朋友参考下吧
    2022-09-09
  • Java基础之MapReduce框架总结与扩展知识点

    Java基础之MapReduce框架总结与扩展知识点

    本章,是MapReduce的最终章,我在写本章的时候,发现前面忘记介绍MpaTask与ReduceTask了,所以本章补上哈,另外还有两个扩展的知识点,讲完这些,我会对整个MapReduce进行总结一下,让大家再次了解MapReduce的工作流程,更加清晰地认识MapReduce ,需要的朋友可以参考下
    2021-05-05
  • 解读Spring事务是如何实现的

    解读Spring事务是如何实现的

    这篇文章主要介绍了Spring事务是如何实现的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java SE循环一些基本练习题总结

    Java SE循环一些基本练习题总结

    循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,下面这篇文章主要给大家总结介绍了关于Java SE循环一些基本练习题,需要的朋友可以参考下
    2024-03-03
  • Java数据结构之栈与队列实例详解

    Java数据结构之栈与队列实例详解

    这篇文章主要给大家介绍了关于Java数据结构之栈与队列的相关资料,算是作为用java描述数据结构的一个开始,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • 利用Java读取Word表格中文本和图片的方法实例

    利用Java读取Word表格中文本和图片的方法实例

    这篇文章主要给大家介绍了关于如何利用Java读取Word表格中文本和图片的相关资料,主要利用的是free spire.doc.jar 包,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2021-07-07

最新评论