网站后台数据分析怎么做,在哪里注册域名,wordpress商城案例,wordpress登录密码错误也不报错Collection#xff1a;单列集合类的跟接口#xff0c;用于存储一系列符合某种规则的元素#xff0c;它有两个重要的子接口#xff0c;分别时List和Set还有Queue。其中List的特点时元素有序#xff0c;元素可重复#xff0c;Set的特点时元素无序且不可重复#xff0c;Que…Collection单列集合类的跟接口用于存储一系列符合某种规则的元素它有两个重要的子接口分别时List和Set还有Queue。其中List的特点时元素有序元素可重复Set的特点时元素无序且不可重复Queue与List性质一样不同之处时Queue是先进先出。Map键值对存储每个值对应一个键是一种映射关系在Map集合中可以通过键值Key找到对应的值Value
List接口
方法声明功能描述Void add(int index,Object element)将元素element元素插入在List集合的index处Boolean addAll(int index,Collection c)将集合c所包含的所有元素插入到List集合的index处的元素Object get(int index)返回集合索引index处的元素Object remove(int index)删除index索引处的元素Object set(int index,Object element)将索引index处元素替换成element对象并将替换后的元素返回Int indexOf(Object o)返回对象o在List集合中出现的位置索引Int lastIndexOf(Object o)返回对象o在List集合中最后一次出现的位置索引List subList(int fromIndex,int toIndex)返回从索引fromIndex包括到toIndex不包括处所有元素集合组成的子集合ArrayList集合ArrayList常见功能添加
public boolean add(E e)
public void add(int index,E element) // 在指定的索引位置添加元素 获取元素
public E get(int index)// 根据索引值获取元素获取元素个数public int size() //获取元素个数删除元素public boolean remove(Object o) // 直接删除元素 public E remove(int index) //根据索引删除元素 ,并把删除的元素返回 修改元素public E set(int index,E element)// 使用element 去替换指定索引的元素 , 并返回被替换的元素
package com.ajax;import java.util.ArrayList;public class Example10 {public static void main(String[] args){ArrayList list1new ArrayList();list1.add(1);list1.add(2);list1.add(3);list1.add(4);list1.add(5);for(Object obj:list1){System.out.println(obj);}}
}LInkedList集合
查询快增删慢package com.ajax;import java.util.ArrayList;
import java.util.LinkedList;public class Example10 {public static void main(String[] args){LinkedList linknew LinkedList();link.add(1);link.add(2);link.add(3);link.add(4);link.add(5);System.out.println(link.toString());Object st link.getFirst();System.out.println(st);}
}Iterator接口Iterator接口也是Java集合框架的成员但它与Collection系列、Map系列的集合不一样Collection系列集合、Map系列集合主要用于盛装其他对象而Iterator则主要用于遍历即迭代访问Collection集合中的元素Iterator对象也被称为迭代器。Iterator接口里定义了如下4个方法–booleanhasNext()如果被迭代的集合还元素没有被遍历则返回true。–Objectnext()返回集合里下一个元素。–voidremove() 删除集合里上一次next方法返回的元素–voidforEachRemaining(Consumer action)这是Java 8为Iterator新增的默认方法该方法可使用Lambda表达式来遍历集合元素。package com.ajax;
import java.util.ArrayList;
importjava.util.Iterator;
importjava.util.LinkedList;public classExample10 {public static void main(String[] args){LinkedList linknewLinkedList();link.add(1);link.add(2);link.add(3);link.add(4);link.add(5);Iterator it link.iterator();while(it.hasNext()){System.out.println(it.next());}}
}Foreach循环for(容器中元素类型 临时变量:容器变量)package com.ajax;importjava.util.ArrayList;public classExample10 {public static void main(String[] args){ArrayList list1newArrayList();list1.add(1);list1.add(2);list1.add(3);list1.add(4);list1.add(5);for(Object obj:list1){System.out.println(obj);}}
}ListIterator接口为了迭代方式的多元化在父类的基础上郑家了一下特有的方法
方法声明 功能描述
void add(Object o) 插入
ObjecthasPrevious() 判断对象是否有上个元素
void remove() 删除next或者previous返回的最后一个元素
package com.ajax;import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;public classExample10 {public static void main(String[] args){ArrayList linknewArrayList();link.add(1);link.add(2);link.add(3);link.add(4);link.add(5);ListIterator itlink.listIterator(link.size());while(it.hasPrevious()){System.out.println(it.previous());}}
}//本例表示以集合的最后一个元素开始迭代Enumeration接口遍历Vector集合Vector集合是线程安全的而ArrayList集合是线程不安全的。
package com.ajax;importjava.util.ArrayList;
importjava.util.Enumeration;
importjava.util.Iterator;
importjava.util.LinkedList;
importjava.util.ListIterator;
importjava.util.Vector;public classExample10 {public static void main(String[] args){Vector linknew Vector();link.add(1);link.add(2);link.add(3);link.add(4);link.add(5);Enumeration itlink.elements();while(it.hasMoreElements()){System.out.println(it.nextElement());}}
}Set接口Set接口和List接口一样同样继承Collection接口并没有对接口进行功能上的补充只是比该接口更加严格了Set无序没有重复
HashSet集合当该集合添加一个对象时首先会调用对象的hashCode()方法来确定与元素的存储位置然后再调用对象的equals()方法来确保该位置没有出现重复元素可以理解为像数据结构中的哈希散列表
package com.ajax;importjava.util.ArrayList;
importjava.util.Enumeration;
importjava.util.HashSet;
importjava.util.Iterator;
importjava.util.LinkedList;
importjava.util.ListIterator;
importjava.util.Vector;public classExample10 {public static void main(String[] args){HashSet linknew HashSet();link.add(1);link.add(2);link.add(3);link.add(4);link.add(1);Iterator itlink.iterator();while(it.hasNext()){System.out.println(it.next());}}
}//结果
3 2 1 5 4
没有出现重复值之所以出现的顺序时无序因为此处的哈希散列表是根据对象的地址来存储的地址越靠前优先输出
TreeSet集合原理是自平衡的排序二叉树特点是存储的元素会按照大小排序并能去重(平衡二叉树的左孩子必须小于根节点右孩子大于根节点的值当出现重复的元素时不做处理树的结构不会放生变化因为节点中已经出现该值)。
package com.ajax;importjava.util.ArrayList;
importjava.util.Enumeration;
importjava.util.HashSet;
importjava.util.Iterator;
importjava.util.LinkedList;
importjava.util.ListIterator;
importjava.util.TreeSet;
importjava.util.Vector;public classExample10 {public static void main(String[] args){TreeSet linknew TreeSet();link.add(1);link.add(2);link.add(3);link.add(4);link.add(1);Iterator itlink.iterator();while(it.hasNext()){System.out.println(it.next());}}
}//结果1234 根据平衡二叉树的原理中序遍历的结果得出1234
Map接口Map接口利用键值对的方式保存数据其实现原理就是红黑树红黑树是二叉查找树如果读者想具体了解红黑树可以参考http://blog.csdn.net/eric491179912/article/details/6179908写的很详细
常用的方法
方法声明 功能描述
void put(Objectkey,Object calue) 将指定的值与此映射的值相关联(可选操作)
Object get(Objectkey) 通过key返回值没有返回null
boolean containsKey(ObjectKey) 如果有映射关系返回true
booleancontainsValue(Object value) 同上HashMap集合package com.ajax;importjava.util.*;public classExample10 {public static void main(String[] args){Map linknew HashMap();link.put(1, a);link.put(3, c);link.put(2, b);link.put(5, d);link.put(4, d);link.put(4, e);link.put(4, f);Set keySetlink.keySet();//获取键的集合Iterator itkeySet.iterator();while(it.hasNext()){Object keyit.next();System.out.println(key:keyvalue:link.get(key));}}
}//结果
key:1value:a
key:2value:b
key:3value:c
key:4value:f
key:5value:d
通过测试可以发现当键相同的元素存入map集合中的时候每次保存的值都会发生改变直到最后一个存储的值为止
TreeMap集合自平衡二叉树排序
package com.ajax;importjava.util.*;public classExample10 {public static void main(String[] args){Map linknew TreeMap();link.put(1, a);link.put(4, d);link.put(2, b);link.put(5, d);link.put(3, c);Set keySetlink.keySet();//获取键的集合Iterator itkeySet.iterator();while(it.hasNext()){Object keyit.next();System.out.println(key:keyvalue:link.get(key));}}
}Properties集合map接口还有一个实现类Hashtable它和HashMap十分相似区别在于Hashstable是线程安全(线程安全不理解的参考https://zhidao.baidu.com/question/168637634.html)的。
Hashtable存取元素的速度很慢目前基本被HashMap取代但Hashtable有一个子类Properties主要用来存储字符串类型的键值对开发中经常存取应用的配置项。