邱县手机网站建设,怎么做百度推广网站,怎么建立一个自己的网站,免费网站建设 godaddy目录 数组储存多个数据方面的特点#xff1a;
Java集合框架体系#xff1a;#xff08;Java.util包下#xff09;
Collection接口中的方法测试#xff1a;
迭代器#xff08;Iterator#xff09;的作用#xff1a;用来遍历集合元素。
增强for循环#xff08;即for…目录 数组储存多个数据方面的特点
Java集合框架体系Java.util包下
Collection接口中的方法测试
迭代器Iterator的作用用来遍历集合元素。
增强for循环即foreach循环的使用
List接口中常用方法的测试
List接口的实现类特点
Set及其实现类的特点
TreeSet底层的数据结构红黑树结构 数组储存多个数据方面的特点
·数组一旦初始化其长度就是确定的。
·数组中的多个元素是依次紧密排列的有序的可重复的。
·数组一旦初始化完成其元素的类型就是确定的。不是此类型的元素就不能添加到此数组中。
数组储存多个数据方面的弊端
·数组一旦初始化其长度就是确定的。
·数组中储存数据特点的单一性。对于无序的不可重复的场景就不适用了。
·数组中可用的方法、属性都极少。具体的需求要自己编写相关代码。
·元素的类型既可以是基本数据类型也可以是引用数据类型。
·针对于数组中元素的删除插入操作性能比较差。 Java集合框架体系Java.util包下
两个接口
java.util.Collection存储一个一个的数据。 ——子接口
①List存储有序的可重复的数据。“动态”数组即变长数组
·实现类ArrayList主要的实现类、LinkedList、Vector
②Set存储无序的不可重复的数据。类似于集合
·实现类HashSet主要实现类、LinkedHashSet、TreeSet java.util.Map存储一对一对的数据。key-value键值对类似于数学的函数
实现类HashMap主要实现类、LinkedHashMap、TreeMap、Hashtable、Properties Collection接口中的方法测试
与添加相关
(1) add(Object obj)添加元素对象到当前集合中。 (2)addAll(Collection other)添加other集合中的所有元素对象到当前集合中。 与判断相关
(3)int size( )获取当前集合中实际存储的元素个数。 (4)boolean isEmpty( )判断当前集合是否为空集合。其实是判断size的大小是否为零 (5)boolean contains(Object obj)判断当前集合中是否存在一个与obj对象equals返回true的元素。如果包含自定义类建议重写equals方法 (6) boolean containsAll(Collection coll)判断coll集合中的元素是否在当前集合中都存在。即coll集合是否是当前集合的“子集”。 (7)boolean equals(Object obj)判断当前集合与obj是否相等。 与删除相关
(8)void clear( )清空集合元素 (9) boolean remove(object obj)从当前集合中删除第一个找到的与obj对象equals返回true的元素。 (10)boolean removeAl(Collection coll)从当前集合中删除所有与coll集合中相同的元素。 (11) boolean retainAll(Collection coll)从当前集合中删除两个集合中不同的元素使得当前集合仅保留与col(集合中的元素相同的元素即当前集合中仅保留两个集合的交集。 其他
(12) Object[ ] toArray( )返回包含当前集合中所有元素的数组。
(13hashCode( )获取集合对象的哈希值。
(14iterator( )返回迭代器对象用于集合遍历。 集合与数组的相互转换
集合转换为数组调用方法toArray( )。 数组转化为集合调用Arrays的静态方法asList(Object ... objs)。 向Collection中添加元素的要求
要求元素所属的类一定要重写equals( )。因为Collection中的相关方法在使用时要调用元素所在类的equals( )。 迭代器Iterator的作用用来遍历集合元素。 获取迭代器的方式
Tterator ii 集合对象.iterator; 迭代的方式
用iterator.hasNext( )方法作为循环的判断条件再循环遍历集合元素。
Person pp new Person(19,Lily);
Collection cc new ArrayList();
cc.add(aaa);
cc.add(111223);//自动装箱为Integer类型再作为参数
cc.add(pp);Iterator iterator cc.iterator();
while(iterator.hasNext())
{System.out.println(iterator.next());
} next的作用①将指针指向的集合元素向下移②将下移后指针位置上的元素返回。 增强for循环即foreach循环的使用
作用用来遍历数组、集合。
格式
for(要遍历的集合或数组的元素的类型 临时变量 : 要遍历的集合或数组变量)
{ //操作临时变量
} 说明
针对于集合来讲增强for循环的底层使用的是迭代器。
增强for循环的执行过程中是将集合或数组中的元素依次赋值给临时变量。 List接口中常用方法的测试
List接口中存储数据的特点
用于存储有序的、可以重复的数据。有时使用List来替代数组变长数组 List中的常用方法
第一批Collection中声明的方法
第二批因为List是有序的所以有一些针对索引操作的方法。
插入元素
void add(int index,Object ele)在index位置插入ele元素 boolean addAll(int indexCollection eles):从index位置开始将eles中的所有元素添加进来 获取元素
Object get(int index)获取指定index位置的元素 List subList(int fromIndex, int toIndex)返回从fromIndex到toIndex位置的子集合 获取元素索引 int indexOf(Object obj)返回obj在集合中首次出现的位置 int lastIndexOf(Object obj)返回obj在当前集合中末次出现的位置 删除和替换元素 Object remove(int index)移除指定index位置的元素并返回此元素。
假设要删除索引为2的元素参数输入2即可。但是要删除值为2的元素就要将2包装为Intrger类型因为参数要Object参数输入2时会优先将2识别为int 类型的index。后再传入参数。 Object set(int index Object ele)设置指定index位置的元素为ele。 List接口的实现类特点
·ArrayListList接口的主要实现类。线程不安全的效率高。底层使用Object[ ]数组存储。在添加数据、查找数据时效率较高在插入数据删除数据时效率较低。 ·LinkedList底层使用双向链表的方式进行存储。在插入数据删除数据时效率较高在添加数据、查找数据时效率较低。在对集合中的数据进行频繁地删除、插入的操作时建议使用此类。 ·VectorList接口的古老实现类。线程安全的效率低。底层使用Object[ ]数组存储。 Set及其实现类的特点
Set存储无序的不可重复的数据。
实现类HashSet主要实现类、LinkedHashSet、TreeSet
Set中的常用方法即为Collection中的声明的抽象方法见《Java集合框架关于Collection接口》
相较于List、Map来说Set的使用频率较少。主要用来过滤重复数据 Set接口中不同实现类的区别
HashSet底层使用的是HashMap即使用数组单向链表红黑树结构进行存储。jdk8新引入红黑树结构 LinkedHashSet继承于HashSet类是HashSet的子类。底层在数组单向链表红黑树结构的基础上又添加了一组双向链表用于记录添加元素的先后顺序。即可以按照添加元素的顺序实现遍历。便于频繁的查询操作。 TreeSet底层使用红黑数存储。可以按照添加的元素的指定的属性的大小顺序进行遍历。 Set中的无序性、不可重复性以下原则只适用于HashSet和LinkHashSet
无序性元素不是依次紧密排列的一来因为是按照哈希值来存放元素并不是按顺序依次存放。二来可能因为哈希冲突一个元素的位置处形成链表。
不可重复性添加到Set中的元素是不能相同的定义不相同的规则取决于对象的类中的equals方法和hashCode方法哈希值相同equals方法返回true则认为元素是相同的。 添加到HashSet和LinkHashSet中的元素的要求
要求元素所在的类中重写两个方法equals方法和hashCode方法。同时要求equals和hashCode保持一致即都以同一批属性为标准。
添加的元素需要排序①自然排序②定制排序 TreeSet底层的数据结构红黑树结构
添加数据后的特点可以按照添加大的元素的指定的属性的大小顺序进行遍历。 添加元素的要求添加到TreeSet中的元素必须是同一个元素类型的对象。否则会报类转换异常。 判断数据是否相同的标准不是考虑HashSet和equals方法比较元素的大小和比较元素是否相等的标准是取决于compareTo( )或compare( )的返回值。如果返回值为0即相等。TreeSet中也不能存放相同的元素所以按照compareTo( )或compare( )的返回值判断后相等后的元素不会添加进TreeSet中。
自然排序指定判断TreeSet中数据是否相同的标准让元素对象的类实现Comparable接口并实现compareTo方法即可。
定制排序指定判断TreeSet中数据是否相同的标准先创建一个Comparator的实现类的对象在其中实现compare方法。再将此实现类的对象作为TreeSet的构造器的参数传入构造器中。具体代码如下
Comparator comparator new Comparator()
{Overridepublic int compare(Object o1, Object o2){if(o1 o2){return -1;}if(!(o1 instanceof User o2 instanceof User)){throw new RuntimeException(类型异常);}User uu1 (User) o1;User uu2 (User) o2;if(uu1.getAge() uu2.getAge()){return uu1.getName().compareTo(uu2.getName());}else if (uu1.getAge() uu2.getAge()){return -1;}else{return 1;}}
};