集合
1.1、定义
集合就是类型统一的数据组合而成的数据结构,该数据结构可以任意的改变长度。
1.3、Set
Set数据存储结构,无序,且不可以重复,元素可以为null,但是也只能出现一次,如下图:
1.3.1、HashSet
HashSet是无序且不可重复元素的Set集合。
package com.wlx.day13;import java.util.HashSet;
import java.util.Iterator;public class HashSetDemo
{public static void main(String[] args){//创建一个集合对象HashSet<Object> hs = new HashSet<>();//此处表示hs集合中只能存放String字符串类型的元素
// HashSet<String> hs = new HashSet<>();//向Set集合中添加元素hs.add("tom");hs.add(123);hs.add(3.14);hs.add(true);hs.add('c');hs.add(new HashSetDemo());//输出集合hs中的元素System.out.println(hs);//获取集合hs中的元素个数System.out.println(hs.size());//删除集合hs中指定的元素hs.remove(123);System.out.println(hs);//使用循环遍历集合for(Object obj : hs){System.out.println(obj);}System.out.println("-------------");//获取hs的迭代器对象Iterator it = hs.iterator();while (it.hasNext()){System.out.println(it.next());}}
}
1.3.2、TreeSet
TreeSet可以对Set集合进行排序,默认情况下是自然排序(从小到大排序)。
package com.wlx.day13;import java.util.Iterator;
import java.util.TreeSet;public class TreeSetDemo
{public static void main(String[] args){TreeSet<Integer> ts = new TreeSet<>();ts.add(123);ts.add(23);ts.add(12);ts.add(321);ts.add(13);System.out.println(ts);//获取集合ts中的元素个数System.out.println(ts.size());//删除集合ts中指定的元素ts.remove(123);System.out.println(ts);//使用循环遍历集合for(Integer ite : ts){System.out.println(ite);}System.out.println("-------------");//获取ts的迭代器对象Iterator<Integer> it = ts.iterator();while (it.hasNext()){//当迭代时使用集合对象中的删除方法删除指定元素时,会出现快速失败机制//ts.remove(321);Integer ig = it.next();/*if(ig == 13){it.remove();}*/System.out.println(ig);}}
}
1.4、List
List数据存储结构,有序,且可以重复,元素可以为null,允许出现多次null值,如下图:
1.4.1、ArrayList
ArrayList底层是数组,在进行查询(遍历/迭代)时,速度仅次于数组,这个集合是有下标的,并且该集合中的元素是可以重复的,推荐在查询功能上使用该集合,不推荐用于删除、增加功能,性能不佳,此时推荐另一个List集合,LinkedList。
package com.wlx.day13;import java.util.ArrayList;
import java.util.List;public class ListDemo
{public static void main(String[] args){//创建List集合对象List<Object> list = new ArrayList<>();list.add("tom");list.add(123);list.add(3.16);list.add(new ListDemo());list.add(true);System.out.println(list);//获取下标为1处的元素System.out.println(list.get(1));//将一个新的元素插入到下标为3处,并替换此处的元素
// list.set(3,"jim");//将一个新的元素插入到下标为3处,不替换原有数据list.add(3,"jim");System.out.println(list);//遍历集合listfor(int i = 0;i < list.size();i++){System.out.println(list.get(i));}System.out.println("---------------------");for(Object obj : list){System.out.println(obj);}//使用迭代器迭代list集合和前面Set一样,此处省略。}
}
1.4.2、LinkedList
package com.wlx.day13;import java.util.LinkedList;
import java.util.ListIterator;public class LinkedListDemo
{public static void main(String[] args){//创建LinkedList对象LinkedList<String> linkedList = new LinkedList<>();linkedList.add("jim");linkedList.add("tom");linkedList.add("lilei");linkedList.add("lucy");/* System.out.println(linkedList);System.out.println(linkedList.size());*///堆栈/* linkedList.push("jim");linkedList.push("tom");linkedList.push("lilei");//从堆栈弹出一个元素,并移除
// System.out.println("pop---"+linkedList.pop());//从堆栈弹出一个元素,不移除该元素System.out.println("peek---"+linkedList.peek());System.out.println(linkedList);*///队列/*System.out.println(linkedList);//获取并移除队列中队头的元素System.out.println("poll---"+linkedList.poll());System.out.println(linkedList);//获取不移除队列中队头的元素System.out.println("peek---"+linkedList.peek());System.out.println(linkedList);*///双端队列//创建双向迭代器ListIterator<String> li = linkedList.listIterator();//正向迭代System.out.println("正向迭代");/*while(li.hasNext()){System.out.println(li.next());}*/System.out.println("--------------");System.out.println("反向迭代");while (li.hasPrevious()){System.out.println(li.previous());}}
}
1.5、Map
Map数据存储结构,键值对,即key—value 一对,其中key是无序,且不可以重复的,而value是相当于有序,且可以重复的,如下图: