import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.TreeSet; public class CollectionList { @SuppressWarnings("unchecked") public static void main(String[] args) { //ArrayList Collection c = new ArrayList(); c.add("李大妈"); c.add(6); System.out.println(c.size());//2 c.remove(6); System.out.println(c.size());//1 System.out.println(c.contains("李大妈"));//true 判断是否有这个元素。 c.add("J2EE"); c.add("权威指南"); c.add(11); System.out.println(c);//[李大妈, J2EE, 权威指南, 11] //HashSet 不是同步的,如果多个线程同时访问一个HashSet,必须通过代码保证其同步。集合元素可以使null //无序,不可重复。 Collection book = new HashSet(); book.add("权威指南"); book.add(11); //C 集合是否包含book集合(C与book集合相同,C集合可以比book集合多) System.out.println(c.containsAll(book)); //C集合减轻book集合里元素 ,反过来的话book集合元素就减没了。 c.removeAll(book); System.out.println(c);//[李大妈, J2EE] //清除C集合元素 c.clear(); System.out.println(c);//[] //book集合里只剩下C集合也同时包含的元素(取交集) book.retainAll(c); System.out.println(book);//[] //Iterator 迭代器的用法 Collection coll = new HashSet(); coll.add("矮矮"); coll.add("哥哥"); coll.add("暨南大学"); coll.add(555); Iterator it = coll.iterator(); while (it.hasNext()) { //因为不确定什么类型,所以用OBject对象 Object obj = it.next(); System.out.println(obj); } //TreeSet 类 TreeSet是SortedSet接口(上一层接口是Set)的唯一实现类 //有序的 TreeSet nums = new TreeSet(); nums.add(1 ); nums.add(2 ); nums.add(3); nums.add(4); nums.add(5); System.out.println(nums);//[-1, 2, 7, 33]自动从小到大排序。 //第一个元素 System.out.println(nums.first()); //最后一个元素 System.out.println(nums.last()); //返回小于4的子集 System.out.println(nums.headSet(4)); //返回大于4的子集 System.out.println(nums.tailSet(4)); //返回大于1小于4的子集 System.out.println(nums.subSet(1, 4)); //List接口 集合 有序的、可重复的、每个元素可以根据索引来找到。 List b = new ArrayList(); b.add(new String("aa")); b.add(new String("bb")); b.add(new String("cc")); b.add(new String("dd")); System.out.println(b);//[aa, bb, cc, dd] // 新建的元素插在集合的第二个位置,原来的集合不会覆盖,会往后推移一个位置。 b.add(1,new String("ee")); Iterator itb = b.iterator(); while (itb.hasNext()) { System.out.println(itb.next()); //aa ee bb cc dd } //删除第三个元素。 b.remove(2);// System.out.println(b);//[aa, ee, cc, dd] //判断指定元素的位置 输出 1 说明在元素在集合的第二个位置 输出-1说明找不到集合。 System.out.println(b.indexOf(new String("ee")));//1 //截取第二个到第三个元素 System.out.println(b.subList(1, 2));//[ee] //ListIterator 迭代器用法 ListIterator listI = b.listIterator(); while (listI.hasNext()) { System.out.println(listI.next());//aa ee cc dd 迭代的时候加* 不会在这打印出来。 //向上一次迭代的元素后面加 listI.add("*"); } System.out.println("------------"+b);//[aa, *, ee, *, cc, *, dd, *] //向后迭代 while(listI.hasPrevious()) { System.out.println(listI.previous());//* dd * cc * ee * aa } //LinkedList 即实现了List集合也实现了queue接口也就是双向队列接口,它是基于链表实现的List类, //对顺序访问集合中的元素进行优化,特别是当插入、删除元素时的速度非常快。 LinkedList ll = new LinkedList(); ll.add("Ok"); // 加入队列的尾部 ll.offer("struct"); //加入栈 ll.push("hibernate"); //加入队列头部 ll.push("spring"); for (int i = 0; i < ll.size(); i++) { System.err.println(ll.get(i));//spring hibernate struct } //访问第一个元素 System.out.println("peek:"+ll.peekFirst()); //访问最后一个元素 System.out.println("peek:"+ll.peekLast()); //采用出栈方式,降低一个元素pop出列。 System.out.println(ll.pop());//spring出列 System.err.println("ll:"+ll);//ll:[hibernate, Ok, struct] //最后一个元素出列 ll.pollLast(); System.out.println("ll2:"+ll);//ll2:[hibernate, Ok] //ArrayList / LinkedList / 性能进行比较 /** 加入Array元素的时间:297 加入LinkedList元素的时间:547 Iterator ArrayList 集合 元素的时间:234 Iterator LinkedList 集合 元素的时间2:78 for ArrayList 集合 元素的时间2:16 总结: 添加元素 Array比LinkedList快。 用Iterator 遍历集合 LinkedList 比Array快 所以遍历集合ArrayList最好用get 最快。 如果要经常做插入、删除操作,LinkedList效率比ArrayList/Vertor 快。 * */ String[] str = new String[9000000]; for (int i = 0; i < 9000000; i++) { str[i] = String.valueOf(i); } Long start = System.currentTimeMillis(); ArrayList al = new ArrayList(); for (int i = 0; i < str.length; i++) { al.add(str[i]); } System.out.println("加入Array元素的时间:"+(System.currentTimeMillis()-start)); start = System.currentTimeMillis(); LinkedList l = new LinkedList(); for (int i = 0; i < str.length; i++) { l.add(str[i]); } System.out.println("加入LinkedList元素的时间:"+(System.currentTimeMillis()-start)); start= System.currentTimeMillis(); for(Iterator t = al.iterator();t.hasNext();) { t.next(); } System.out.println("Iterator ArrayList 集合 元素的时间:"+(System.currentTimeMillis()-start)); start= System.currentTimeMillis(); for(Iterator l2 = l.iterator();l2.hasNext();) { l2.next(); } System.out.println("Iterator LinkedList 集合 元素的时间2:"+(System.currentTimeMillis()-start)); start = System.currentTimeMillis(); for (int i = 0; i < str.length; i++) { al.get(i); } System.out.println("for ArrayList 集合 元素的时间2:"+(System.currentTimeMillis()-start)); //Map 是顶级接口,实现类有HashMap 、Hashtable等实现类。 //Map里的Key不能重复,key没有顺序,使用keySet()方法可以把Map里的集合组成Set集合。 //HashMap 和 Hashtable 区别:、 //Hashtable是线程安全,所以HashMap比Hashtable性能高,如果有多个线程同时访问使用Hashtable更好。 //Hashtable 不允许有NULL作为Key和Value // 都是不能保证顺序的。 // } }
相关推荐
Java集合框架是Java编程语言中的一个核心部分,它为数据存储和管理提供了高效且灵活的解决方案。本思维导图及总结旨在深入理解并掌握Java集合的相关概念和使用方法。 首先,我们来了解一下Java集合框架的基本构成。...
本文将深入探讨Java集合框架的基础知识,包括接口、类、以及它们在实际开发中的应用。 首先,Java集合框架由一系列接口和实现这些接口的类组成。主要的接口有`List`、`Set`和`Queue`,它们各自代表了不同特性的数据...
在这个“java集合练习题”中,我们主要关注如何使用Java集合框架来处理数据,特别是对于学生信息的存储、排序和输出。以下是对这个练习题的详细解析: 1. **集合框架简介**: Java集合框架是Java API的一部分,它...
Java集合框架是Java编程语言中不可或缺的一部分,它提供了一组高效的数据结构和算法,使得开发者可以方便地存储和管理对象。这份"Java集合思维导图.xmind.zip"压缩包文件,显然旨在帮助学习者深入理解Java集合框架的...
### Java集合知识大全 #### 一、集合概述 在Java编程语言中,集合是一组用于存储其他对象的对象。集合框架提供了多种数据结构,用于管理不同类型的数据。这些数据结构包括列表(List)、集(Set)、映射(Map)等,每种...
xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...
Java集合框架是Java编程语言中的一个核心组成部分,它为数据存储和操作提供了丰富的接口和类。在本篇中,我们将深入探讨Java集合的排序机制以及集合类的详细使用。 首先,我们来了解一下Java集合的基本分类。Java...
Java集合框架中的`List`接口和数组(Array)是两种常用的数据结构,它们在处理数据时各有优势。下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这...
Java集合框架是Java编程语言中用于存储和管理对象的核心组件,它包括了各种接口和类,为处理数据提供了丰富的选择。在本次实验中,我们深入学习了Java集合框架中的两个主要部分:List接口和Map接口,以及它们的主要...
【Java集合】 Java集合框架是Java编程语言中用于存储和操作对象的工具,它提供了多种数据结构,如列表、集、映射等,以适应不同的数据处理需求。集合类通常位于`java.util`包下,是Java程序员必备的知识点。 1. **...
### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...
Java 集合类详解 Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、...
Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组高级的数据结构,使得开发者能够更方便地管理和操作对象。在本次实验中,我们主要关注了三个主要的集合接口:Set、List和Map,以及它们的一些常见...
Java集合框架是Java编程语言中一个非常重要的组成部分,它为开发者提供了存储和操作对象的统一接口和类。这个框架使得处理各种数据结构变得更加方便和高效。在这个“java集合框架的使用”主题中,我们将深入探讨如何...
Java集合框架是Java编程语言中不可或缺的一部分,它提供了一组接口和类,用于高效地存储、管理和操作数据。这个“一个讲解很清晰的Java集合框架PPT”显然是一个对外公开的教育资源,旨在帮助学习者深入理解Java集合...
Java集合框架是Java编程语言中的核心部分,它提供了一种高效、灵活的方式来组织和操作对象的集合。在Java中,集合主要分为两大类:Collection和Map。本文将深入讲解Java集合类,特别是Collection接口和其下的List、...
Java集合整体讲解,其中包含了Collection,Map,Iterator和一些工具类,以及集合整体大框架
Java集合框架是Java编程语言中的核心组件之一,它为存储、管理和操作对象提供了一套高效且灵活的工具。本系列深入讲解了Java集合框架中的重要组成部分,包括HashMap、ArrayList、LinkedHashMap、HashSet以及...
该文档主要详细总结了Java集合的相关知识,包括Collection和Map接口、Collection接口的子接口List和Set接口以及具体的实现类、存储原理等;Map接口的子接口HashMap、LinkedHashMap、TreeMap、Properties等