1.集合概述

集合按照存储结构可以分为两类,即单列集合 Collection 和双列集合 Map。
* Collection 用于存储一系列符合某种规则的元素,它有两个重要的自接口,分别是List和Set。--List 的特点是元素有序、元素可重复。List接口的主要实现类有 ArrayList 和 LinkeList--Set  的特点是元素无序、元素不可重复。Set 接口的主要实现类有 HashSet 和 TreeSet* Map    用于存储具有键(Key)、值(Value)映射关系的元素。Map接口的主要实现类有HashMap 和 TreeMap。

2.实例
2.1 ArrayList 实例

package test02;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;public class ArrayListExamples {public static void main(String[] args) {//创建一个空的数组链表对象list,list用来存放String类型的数据ArrayList<String> list = new ArrayList<String>();//添加元素到list对象中list.add("Item01");list.add("Item02");list.add(2,"Item03"); //将会把Item03字符串增加到list的第3个位置list.add("Item04");// 显示数组链表中的内容System.out.println("The arraylist contains the following elements: " + list);        // 检查元素的位置int pos = list.indexOf("Item2");System.out.println("The index of Item2 is: " + pos);// 检查数组链表是否为空boolean check = list.isEmpty();System.out.println("Checking if the arraylist is empty: " + check);// 获取链表的大小int size = list.size();System.out.println("The size of the list is: " + size);// 检查数组链表中是否包含某元素boolean element = list.contains("Item5");System.out.println("Checking if the arraylist contains the object Item5: "+ element);// 获取指定位置上的元素String item = list.get(0);System.out.println("The item is the index 0 is: " + item);// 遍历arraylist中的元素// 第1种方法: 循环使用元素的索引和链表的大小System.out.println("Retrieving items with loop using index and size list");for (int i = 0; i < list.size(); i++) {System.out.println("Index: " + i + " - Item: " + list.get(i));}// 第2种方法:使用foreach循环System.out.println("Retrieving items using foreach loop");for (String str : list) {System.out.println("Item is: " + str);}// 第三种方法:使用迭代器// hasNext(): 返回true表示链表链表中还有元素// next(): 返回下一个元素System.out.println("Retrieving items using iterator");for (Iterator<String> it = list.iterator(); it.hasNext();) {System.out.println("Item is: " + it.next());}// 替换元素list.set(1, "NewItem");System.out.println("The arraylist after the replacement is: " + list);// 移除元素// 移除第0个位置上的元素list.remove(0);// 移除第一次找到的 "Item3"元素list.remove("Item3");System.out.println("The final contents of the arraylist are: " + list);// 转换 ArrayList 为 ArrayString[] simpleArray = list.toArray(new String[list.size()]);System.out.println("The array created after the conversion of our arraylist is: "+ Arrays.toString(simpleArray));        }
}

2.2 LinkedList 实例

2.2.1 LinkedList遍历方式   

package test02;import java.util.Iterator;
import java.util.LinkedList;
import java.util.NoSuchElementException;public class LinkedListThruTest {public static void main(String[] args) {// 通过Iterator遍历LinkedList
        iteratorLinkedListThruIterator(getLinkedList());// 通过快速随机访问遍历LinkedList
        iteratorLinkedListThruForeach(getLinkedList());// 通过for循环的变种来访问遍历LinkedList
        iteratorThroughFor2(getLinkedList());// 通过PollFirst()遍历LinkedList
        iteratorThroughPollFirst(getLinkedList());// 通过PollLast()遍历LinkedList
        iteratorThroughPollLast(getLinkedList());// 通过removeFirst()遍历LinkedList
        iteratorThroughRemoveFirst(getLinkedList());// 通过removeLast()遍历LinkedList
        iteratorThroughRemoveLast(getLinkedList());}//创建列表private static LinkedList getLinkedList() {LinkedList llist = new LinkedList();for (int i = 0; i < 100000; i++)llist.addLast(i);return llist;}/*** 通过快迭代器遍历LinkedList*/private static void iteratorLinkedListThruIterator(LinkedList<Integer> list) {if (list == null)return;// 记录开始时间long start = System.currentTimeMillis();for (Iterator iter = list.iterator(); iter.hasNext();)iter.next();// 记录结束时间long end = System.currentTimeMillis();long interval = end - start;System.out.println("iteratorLinkedListThruIterator:" + interval + " ms");}/*** 通过快速随机访问遍历LinkedList*/private static void iteratorLinkedListThruForeach(LinkedList<Integer> list) {if (list == null)return;// 记录开始时间long start = System.currentTimeMillis();int size = list.size();for (int i = 0; i < size; i++) {list.get(i);}// 记录结束时间long end = System.currentTimeMillis();long interval = end - start;System.out.println("iteratorLinkedListThruForeach:" + interval + " ms");}/*** 通过另外一种for循环来遍历LinkedList*/private static void iteratorThroughFor2(LinkedList<Integer> list) {if (list == null)return;// 记录开始时间long start = System.currentTimeMillis();for (Integer integ : list);// 记录结束时间long end = System.currentTimeMillis();long interval = end - start;System.out.println("iteratorThroughFor2:" + interval + " ms");}/*** 通过pollFirst()来遍历LinkedList*/private static void iteratorThroughPollFirst(LinkedList<Integer> list) {if (list == null)return;// 记录开始时间long start = System.currentTimeMillis();while (list.pollFirst() != null);// 记录结束时间long end = System.currentTimeMillis();long interval = end - start;System.out.println("iteratorThroughPollFirst:" + interval + " ms");}/*** 通过pollLast()来遍历LinkedList*/private static void iteratorThroughPollLast(LinkedList<Integer> list) {if (list == null)return;// 记录开始时间long start = System.currentTimeMillis();while (list.pollLast() != null);// 记录结束时间long end = System.currentTimeMillis();long interval = end - start;System.out.println("iteratorThroughPollLast:" + interval + " ms");}/*** 通过removeFirst()来遍历LinkedList*/private static void iteratorThroughRemoveFirst(LinkedList<Integer> list) {if (list == null)return;// 记录开始时间long start = System.currentTimeMillis();try {while (list.removeFirst() != null);} catch (NoSuchElementException e) {}// 记录结束时间long end = System.currentTimeMillis();long interval = end - start;System.out.println("iteratorThroughRemoveFirst:" + interval + " ms");}/*** 通过removeLast()来遍历LinkedList*/private static void iteratorThroughRemoveLast(LinkedList<Integer> list) {if (list == null)return;// 记录开始时间long start = System.currentTimeMillis();try {while (list.removeLast() != null);} catch (NoSuchElementException e) {}// 记录结束时间long end = System.currentTimeMillis();long interval = end - start;System.out.println("iteratorThroughRemoveLast:" + interval + " ms");}}

2.2.2 LinkedList的常用API示例

package test02;import java.util.List;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.NoSuchElementException;public class LinkedListTest {public static void main(String[] args) {// 测试LinkedList的API
        testLinkedListAPIs();// 将LinkedList当作 LIFO(后进先出)的堆栈
        useLinkedListAsLIFO();// 将LinkedList当作 FIFO(先进先出)的队列
        useLinkedListAsFIFO();}/** 测试LinkedList中部分API*/private static void testLinkedListAPIs() {String val = null;// LinkedList llist;// llist.offer("10");// 新建一个LinkedList
        LinkedList llist = new LinkedList();// ---- 添加操作 ----// 依次添加1,2,3llist.add("1");llist.add("2");llist.add("3");// 将“4”添加到第一个位置llist.add(1, "4");System.out.println("\nTest \"addFirst(), removeFirst(), getFirst()\"");        // (01) 将“10”添加到第一个位置。 失败的话,抛出异常!llist.addFirst("10");System.out.println("llist:" + llist);// (02) 将第一个元素删除。 失败的话,抛出异常!System.out.println("llist.removeFirst():" + llist.removeFirst());System.out.println("llist:" + llist);// (03) 获取第一个元素。 失败的话,抛出异常!System.out.println("llist.getFirst():" + llist.getFirst());System.out.println("\nTest \"offerFirst(), pollFirst(), peekFirst()\"");// (01) 将“10”添加到第一个位置。 返回true。llist.offerFirst("10");System.out.println("llist:" + llist);// (02) 将第一个元素删除。 失败的话,返回null。System.out.println("llist.pollFirst():" + llist.pollFirst());System.out.println("llist:" + llist);// (03) 获取第一个元素。 失败的话,返回null。System.out.println("llist.peekFirst():" + llist.peekFirst());System.out.println("\nTest \"addLast(), removeLast(), getLast()\"");// (01) 将“20”添加到最后一个位置。 失败的话,抛出异常!llist.addLast("20");System.out.println("llist:" + llist);// (02) 将最后一个元素删除。 失败的话,抛出异常!System.out.println("llist.removeLast():" + llist.removeLast());System.out.println("llist:" + llist);// (03) 获取最后一个元素。 失败的话,抛出异常!System.out.println("llist.getLast():" + llist.getLast());System.out.println("\nTest \"offerLast(), pollLast(), peekLast()\"");// (01) 将“20”添加到第一个位置。 返回true。llist.offerLast("20");System.out.println("llist:" + llist);// (02) 将第一个元素删除。 失败的话,返回null。System.out.println("llist.pollLast():" + llist.pollLast());System.out.println("llist:" + llist);// (03) 获取第一个元素。 失败的话,返回null。System.out.println("llist.peekLast():" + llist.peekLast());// 将第3个元素设置300。不建议在LinkedList中使用此操作,因为效率低!llist.set(2, "300");// 获取第3个元素。不建议在LinkedList中使用此操作,因为效率低!System.out.println("\nget(3):" + llist.get(2));// ---- toArray(T[] a) ----// 将LinkedList转行为数组String[] arr = (String[]) llist.toArray(new String[0]);for (String str : arr)System.out.println("str:" + str);// 输出大小System.out.println("size:" + llist.size());// 清空LinkedList
        llist.clear();// 判断LinkedList是否为空System.out.println("isEmpty():" + llist.isEmpty() + "\n");}/*** 将LinkedList当作 LIFO(后进先出)的堆栈*/private static void useLinkedListAsLIFO() {System.out.println("\nuseLinkedListAsLIFO");// 新建一个LinkedListLinkedList stack = new LinkedList();// 将1,2,3,4添加到堆栈中stack.push("1");stack.push("2");stack.push("3");stack.push("4");// 打印“栈”System.out.println("stack:" + stack);// 删除“栈顶元素”System.out.println("stack.pop():" + stack.pop());// 取出“栈顶元素”System.out.println("stack.peek():" + stack.peek());// 打印“栈”System.out.println("stack:" + stack);}/*** 将LinkedList当作 FIFO(先进先出)的队列*/private static void useLinkedListAsFIFO() {System.out.println("\nuseLinkedListAsFIFO");// 新建一个LinkedListLinkedList queue = new LinkedList();// 将10,20,30,40添加到队列。每次都是插入到末尾queue.add("10");queue.add("20");queue.add("30");queue.add("40");// 打印“队列”System.out.println("queue:" + queue);// 删除(队列的第一个元素)System.out.println("queue.remove():" + queue.remove());// 读取(队列的第一个元素)System.out.println("queue.element():" + queue.element());// 打印“队列”System.out.println("queue:" + queue);}
}

2.3 HashMap 实例
2.3.1  HashMap 遍历方式   

package test02;import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Map.Entry;public class HashMapDemo {public static void main(String[] args) {HashMap<String, String> hashMap = new HashMap<String, String>();hashMap.put("cn", "中国");hashMap.put("jp", "日本");hashMap.put("fr", "法国");System.out.println(hashMap);System.out.println("cn:" + hashMap.get("cn"));System.out.println(hashMap.containsKey("cn"));System.out.println(hashMap.keySet());System.out.println(hashMap.isEmpty());hashMap.remove("cn");System.out.println(hashMap.containsKey("cn"));// 采用Iterator遍历HashMapIterator it = hashMap.keySet().iterator();while (it.hasNext()) {String key = (String) it.next();System.out.println("key:" + key);System.out.println("value:" + hashMap.get(key));}// 遍历HashMap的另一个方法Set<Entry<String, String>> sets = hashMap.entrySet();for (Entry<String, String> entry : sets) {System.out.print(entry.getKey() + ", ");System.out.println(entry.getValue());}}
}

2.3.2 结合List和HashMap实现的例子

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Map.Entry;public class HashMapDemo {public static void main(String[] args) {HashMap<String, String> hashMap = new HashMap<String, String>();hashMap.put("cn", "中国");hashMap.put("jp", "日本");hashMap.put("fr", "法国");System.out.println(hashMap);System.out.println("cn:" + hashMap.get("cn"));System.out.println(hashMap.containsKey("cn"));System.out.println(hashMap.keySet());System.out.println(hashMap.isEmpty());hashMap.remove("cn");System.out.println(hashMap.containsKey("cn"));// 采用Iterator遍历HashMapIterator it = hashMap.keySet().iterator();while (it.hasNext()) {String key = (String) it.next();System.out.println("key:" + key);System.out.println("value:" + hashMap.get(key));}// 遍历HashMap的另一个方法Set<Entry<String, String>> sets = hashMap.entrySet();for (Entry<String, String> entry : sets) {System.out.print(entry.getKey() + ", ");System.out.println(entry.getValue());}}
}

转载于:https://www.cnblogs.com/polestar/p/7284171.html

java (10) 集合类相关推荐

  1. JAVA关于集合类小程序--模拟新浪用户注册

    JAVA关于集合类小程序–模拟新浪用户注册 任务介绍: 编写一个模拟新浪微博用户注册的小程序,要求使用HashSet集合来实现.用户需要输入的有:用户名,密码.确认密码.生日(格式为:yyyy-mm- ...

  2. Java 常用集合类学习

    Java 常用集合类学习 1 Collection集合 1.1 Collection集合简介 1.2 Collection集合基本操作 1.3 Collection集合迭代 2 List集合 2.1 ...

  3. Java小记-集合类(超级无敌认真好用,万字收藏篇!!!!)

    文章目录 集合类 1 为什么要使用集合类? 1.2数组的特点 1.3 集合类的特点 2 Java中集合类的类结构 3 基于List接口的ArrayList类的使用 3.1 ArrayList的特点 3 ...

  4. cxf springmvc_拥抱模块化Java平台:Java 10上的Apache CXF

    cxf springmvc 自Java 9发布最终将Project Jigsaw交付给大众以来,已经过去了整整一年的时间. 这是一段漫长的旅程,但是在那里,所以发生了什么变化? 这是一个很好的问题,答 ...

  5. Java 9 - 17 特性解读:Java 10

    在上一篇我们对Java 9的特性进行了一些回顾,今天接着来看看Java 10带来了什么特性.之所以需要把Java 8 到Java 17的特性归纳一遍,因为Java社区对Java 17的重视程度前所未有 ...

  6. Java 10更新汇总,新的编译器通吃主流编程语言

    早些时候Oracle发布了Java 10,这是Oracle更改发布策略之后的第一版Java,Oracle现已决定每六个月发布一个新的Java版本,周期缩短了,但是并不是说我们要学的更多了,而是说缩短开 ...

  7. Java 10 实战第 1 篇:局部变量类型推断

    现在 Java 9 被遗弃了直接升级到了 Java 10,之前也发过 Java 10 新特性的文章,现在是开始实战 Java 10 的时候了. 今天要实战的是 Java 10 中最重要的特性:局部变量 ...

  8. 3月20日, Java 10 正式发布了!

    3 月 20 日,Oracle 宣布 Java 10 正式发布.官方已提供下载:http://www.oracle.com/technetwork/java/javase/downloads/inde ...

  9. 关于java的集合类,以及HashMap中Set的用法!

    來源:http://hi.baidu.com/fyears/blog/item/52329711622e007ccb80c465.html 关于java的集合类,以及HashMap中Set的用法! 2 ...

最新文章

  1. python os sys_python os模块sys模块常用方法
  2. sql server 函数学习
  3. hadoop loadBalance源码分析
  4. 图谱实战 | 面向C端场景的概念图谱构成、建设与应用索引
  5. 算法岗百里挑一热爆了,全球AI大厂薪酬大起底
  6. android代码跳过锁屏,Android_android禁止锁屏保持常亮(示例代码),在播放video的时候在mediaplayer m - phpStudy...
  7. 万豪国际12家餐厅再登米其林指南;五大高端品牌酒店签约港珠澳口岸城 | 中国酒店业周刊...
  8. 用Python实现随机森林回归
  9. joomla新建模板_WordPress v Joomla:模板和主题
  10. Linux运行网易云命令,因环境变量而在Ubuntu 18.04下无法启动网易云音乐的解决
  11. Python中的re.search和re.group用法
  12. 用脑子说话,用心服务
  13. 【机器视觉】工业传统视觉和3D视觉算法
  14. 单片机流星灯_51单片机流星灯c语言源程序
  15. kaggle比赛——Jigsaw Rate Severity of Toxic Comments(NLP类型)——分析获奖模型笔记
  16. 大道至简之一:如何准确把握趋势
  17. java程序及数据库常见问题
  18. webpack点滴yan
  19. Pytorch模型加密的方法
  20. 【PCL】VoxelGrid滤波器下采样

热门文章

  1. Xcode clang-omp openmp开发
  2. git下载指定分支代码到本地
  3. KPI与OKR的区别
  4. 对静态区,栈,堆的理解
  5. spring28: aspectJ--基于xml
  6. C六:指针可以比较大小
  7. oracle 创建带参数的视图
  8. go微服务框架-gomicro试用
  9. ElasticSearch插件安装
  10. 查看Oracle耗时Sql