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中集合的概念(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍java语言注解基础概念详解,包括了java语言注解基础概念详解的使用技巧和注意事项,需要的朋友参考一下 1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃; 2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期; 3、Retenti
下面介绍 BindingX 中涉及到的一些核心概念,它们分别是 表达式 、 事件类型 、 属性变换 。要想使用 BindingX 必须先理解这些概念。 表达式(Expression) 表达式,是由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合。譬如, x\*3+10 就是一个表达式,当x被赋值时,整个表达式就会有一个明确的结果。通过表达式,我们就可以描述一个具体的交互行为,比如我们希望
一 单层神经网络(感知器) 1.结构 下面来说明感知器模型。 在原来MP模型的“输入”位置添加神经元节点,标志其为“输入单元”。其余不变,于是我们就有了下图:从本图开始,我们将权值w1, w2, w3写到“连接线”的中间。 图1 单层神经网络 在“感知器”中,有两个层次。分别是输入层和输出层。输入层里的“输入单元”只负责传输数据,不做计算。输出层里的“输出单元”则需要对前面一层的输入进行计算。 我
在了解简单的例子的基础上,下面将介绍编写Spark Streaming应用程序必需的一些基本概念。 关联 初始化StreamingContext 离散流 输入DStreams DStream中的转换 DStream的输出操作 缓存或持久化 Checkpointing 部署应用程序 监控应用程序
概述 本书主要讲解的是关于 Java 在分布式系统中的应用。本书的读者假设都具备了 Java 的基础知识。 如果你需要了解有关 Java 基础知识,可以参阅笔者的另外一本开源书《Java 编程要点》。 分布式系统的概念 《分布式系统原理与范型》一书中是这样定义分布式系统的: 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统。 这里面包含了2个含义: 硬件独立:计算机机器本
节点(Node):一个节点是一个运行 Kubernetes 中的主机。 容器组(Pod):一个 Pod 对应于由若干容器组成的一个容器组,同个组内的容器共享一个存储卷(volume)。 容器组生命周期(pos-states):包含所有容器状态集合,包括容器组状态类型,容器组生命周期,事件,重启策略,以及 replication controllers。 Replication Controller