`

Java 集合篇

 
阅读更多

1.    Java集合类库中最重要的两个接口Collection<E>和Map<K,V>,其中Collection接口又再次划分为 List和Set两大子接口,List中可以包含重复的元素,Set中则不可以。以下列举出一些常用的集合实现类,他们均分别继承自这两个接口:
    1)    ArrayList: 一种可以动态增长和缩减的索引序列(动态数组,类似于C++中的vector);
    2)    LinkedList: 一种可以在任何位置进行高效的插入和删除操作的有序序列(类似于C++中list);
    3)    ArrayDeque: 一种用循环数组实现的双端队列(类似于C++中的deque);
    4)    HastSet:一种没有重复元素的无序集合(C++的标准库中并未提供hashset集合,但是Windows的VC和Linux平台下的gcc均各自提供了hashset容器);
    5)    TreeSet: 一种有序集(类似于C++中的set);
    6)    EnumSet: 一种包含枚举类型值的集;
    7)    LinkedHashSet: 一种可以记住元素插入次序的集,在其内部由LinkedList负责维护插入的次序,HashSet来维护Hash;
    8)    HashMap:一种存储键值对关联的数据结构(C++的标准库中并未提供hashmap集合,但是Windows的VC和Linux平台下的gcc均各自提供了hashmap容器);
    9)    TreeMap:一种键值有序排列的映射表(类似于C++中的map);
    10)   EnumMap:一种键值属于枚举类型的映射表;
    11)   LinkedHashMap:一种可以记住键值项插入次序的映射表;
    2.    ArrayList:该集合的底层是通过动态数组来实现的,集合构造的时候可以指定一个初始容量,当插入的元素过多导致已有的容量不能容纳新元素是,其底 层数组的容量将自动增长原有容量的1.5 倍,这样会带来一定的空间浪费,但是为了避免经常扩张而带来的性能开销,只能是用空间换取时间了。如果在容器的中间添加或者删除一个元素都将会导致后面的 元素向后或向前移动一个位置,如果元素数量较多且该操作比较频繁,将会导致系统的性能降低,然而对于容器中元素的随机访问性能较好,以下为 ArrayList的常用示例代码:

1     public static void showIterator() {
  2         ArrayList<String> list = new ArrayList<String>();
  3         list.add("Monday");
  4         list.add("Tuesdag");
  5         list.add("Wednesday");
  6         Iterator<String> iterator = null;
  7         iterator = list.iterator();
  8         //while
  9         while (iterator.hasNext()) {
 10             String element = iterator.next();
 11             System.out.println(element);
 12         }
 13         //for
 14         for (iterator = list.iterator(); iterator.hasNext();) {
 15             String element = iterator.next();
 16             System.out.println(element);
 17         }
 18         //for each
 19         for (String element : list) {
 20             System.out.println(element);
 21         }
 22     }
 23 
 24     public static void showSetAndGet() {
 25         ArrayList<String> nums = new ArrayList<String>();
 26         nums.clear();
 27         nums.add("One");
 28         nums.add("Two");
 29         nums.add("Three");
 30         System.out.println(nums);
 31         nums.set(0, "Uno");
 32         nums.set(1, "Dos");
 33         nums.set(2, "Tres");
 34         for (int i = 0; i < nums.size(); ++i)
 35             System.out.println(nums.get(i));
 36     }
 37     
 38     public static void showRemoveAndSize() {
 39         ArrayList<String> al = new ArrayList<String>();
 40         System.out.println("Initial size of al: " + al.size());
 41         al.add("C");
 42         al.add("A");
 43         al.add("E");
 44         al.add("B");
 45         al.add(1, "A2");
 46         System.out.println("Size of al after additions: " + al.size());
 47         System.out.println("Contents of al: " + al);
 48         al.remove("F");
 49         al.remove(2);
 50         System.out.println("Size of al after deletions: " + al.size());
 51         System.out.println("Contents of al: " + al);
 52         Iterator<String> it = al.iterator();
 53         //Notes:remove() must be called after next()
 54         it.next();
 55         it.remove();
 56         System.out.println("Size of al after deletions: " + al.size());
 57         System.out.println("Contents of al: " + al);        
 58     }
 59     
 60     public static void showSubListAndCopyToArray() {
 61         ArrayList<String> arrayList = new ArrayList<String>();
 62         arrayList.add("1");
 63         arrayList.add("2");
 64         arrayList.add("3");
 65         arrayList.add("4");
 66         arrayList.add("5");
 67         List<String> lst = arrayList.subList(1, 3);
 68         for (int i = 0; i < lst.size(); i++)
 69             System.out.println(lst.get(i));        
 70         // remove one element from sub list
 71         String obj = lst.remove(0);
 72         System.out.println(obj + " is removed");
 73         for (String str: arrayList)
 74             System.out.println(str);
 75         //get object array with normal method
 76         Object[] objArray = arrayList.toArray();
 77         for (Object obj1 : objArray)
 78             System.out.println(obj1);
 79         //get object array with generic method
 80         String[] strArray = arrayList.toArray(new String[0]);
 81         for (String str : strArray)
 82             System.out.println(str); 
 83     }
 84     
 85     public static void showListIterator() {
 86         ArrayList<String> aList = new ArrayList<String>();
 87         aList.add("1");
 88         aList.add("2");
 89         aList.add("3");
 90         aList.add("4");
 91         aList.add("5");
 92         
 93         ListIterator<String> listIterator = aList.listIterator();
 94         while (listIterator.hasNext()) {
 95             System.out.println(listIterator.next());
 96             System.out.println("Previous: " + listIterator.previousIndex());
 97             System.out.println("Next: " + listIterator.nextIndex());
 98         }
 99         while (listIterator.hasPrevious()) {
100             System.out.println(listIterator.previous());
101             System.out.println("Previous: " + listIterator.previousIndex());
102             System.out.println("Next: " + listIterator.nextIndex());
103         }
104         listIterator = aList.listIterator(2);
105         listIterator.next();
106         listIterator.set("100");
107         listIterator.next();
108         listIterator.remove();
109         for (String str : aList)
110             System.out.println(str);
111 
112         if (aList.contains("4"))
113             System.out.println("True");
114         else
115             System.out.println("False");
116     }
117     
118     public static void showFillAndReplace() {
119         ArrayList<String> arrayList = new ArrayList<String>();
120         arrayList.add("A");
121         arrayList.add("B");
122         arrayList.add("A");
123         arrayList.add("C");
124         arrayList.add("D");
125         Collections.replaceAll(arrayList, "A", "Replace All");
126         System.out.println(arrayList);
127         Collections.fill(arrayList, "REPLACED");
128         System.out.println(arrayList);
129     }
130 
131     public static void showCollectionOperation() {
132         List<String> colours = new ArrayList<String>();
133         colours.add("red");
134         colours.add("green");
135         colours.add("blue");
136 
137         System.out.println(colours);
138         Collections.swap(colours, 0, 2);
139         System.out.println(colours);
140 
141         Collections.reverse(colours);
142         System.out.println(colours);
143 
144         Collections.sort(colours);
145         System.out.println(Arrays.toString(colours.toArray()));
146         Collections.sort(colours, Collections.reverseOrder());
147         System.out.println(Arrays.toString(colours.toArray()));
148 
149         int index = Collections.binarySearch(colours, "green");
150         System.out.println("Element found at : " + index);
151         ArrayList<Integer> arrayList = new ArrayList<Integer>();
152         arrayList.add(new Integer("3"));
153         arrayList.add(new Integer("1"));
154         arrayList.add(new Integer("8"));
155         arrayList.add(new Integer("3"));
156         arrayList.add(new Integer("5"));
157         System.out.println(Collections.min(arrayList));
158         System.out.println(Collections.max(arrayList));
159     }
160     
161     public static void showMinMax() {
162         ArrayList<Integer> arrayList = new ArrayList<Integer>();
163         arrayList.add(new Integer("3"));
164         arrayList.add(new Integer("1"));
165         arrayList.add(new Integer("8"));
166         arrayList.add(new Integer("3"));
167         arrayList.add(new Integer("5"));
168         System.out.println(Collections.min(arrayList));
169         System.out.println(Collections.max(arrayList));
170     }
171     
172     public static void showSynchronizedList() {
173         ArrayList arrayList = new ArrayList();
174         List list = Collections.synchronizedList(arrayList);
175         //list之后的并发操作将不再需要synchronized关键字来进行同步了。
176     }

转自:http://www.cnblogs.com/stephen-liu74/archive/2011/08/26/2155082.html
分享到:
评论

相关推荐

    面渣逆袭 Java 集合框架篇.pdf

    面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣...

    超详细的Java面试题总结(三)之Java集合篇常见问题.docx

    Java集合框架是编程中至关重要的部分,面试中经常会考察到这一领域的知识。下面将详细讨论在Java面试中常见的集合相关问题。 首先,我们要了解三种基本的集合接口:List、Set和Map。List接口用于存储一组有序且不...

    Java基础篇:Java集合.pdf

    该文档主要详细总结了Java集合的相关知识,包括Collection和Map接口、Collection接口的子接口List和Set接口以及具体的实现类、存储原理等;Map接口的子接口HashMap、LinkedHashMap、TreeMap、Properties等

    Java集合排序及java集合类详解

    在本篇中,我们将深入探讨Java集合的排序机制以及集合类的详细使用。 首先,我们来了解一下Java集合的基本分类。Java集合主要分为两大类:List(列表)和Set(集)。List是一个有序的集合,允许元素重复,并且可以...

    Java 集合类 简单Demo

    这篇博客文章可能详细解释了如何创建、操作和理解Java集合类的基本概念。 首先,Java集合框架主要包括接口和实现这些接口的类。接口如`List`, `Set`, `Queue`, `Map`等,定义了集合的行为和操作。而`ArrayList`, `...

    Java_集合.md

    适合Java进阶集合篇,集合知识点详解

    Java集合框架学习笔记

    本篇将详细探讨Java集合框架的基础知识,包括核心接口、类的层级结构以及Java 5引入的泛型特性。 首先,让我们了解一下`java.lang.Class`。`Class`类在Java中扮演着特殊的角色,它不仅是一个普通类,而且是用于获取...

    java集合框架全面进阶

    本篇文章将深入探讨Java集合框架的各个方面,帮助开发者从基础到高级全面掌握这一关键知识。 首先,我们要理解Java集合框架的基础概念。集合是对象的容器,可以容纳多个对象,而框架则是一组接口和实现这些接口的类...

    Java集合概述与实例分析

    Java集合框架是Java编程语言中的一个核心特性,它提供了一种高效、灵活的方式来存储和操作对象数组。在Java中,集合被分为两个主要接口:Collection和Map。本篇将深入探讨Collection接口及其子接口,包括List和Set,...

    Java集合详解

    本篇文章将详细探讨Java集合框架的各个方面,包括其核心概念、主要接口、实现原理以及一些重要的应用场景。 ### 集合框架概述 #### 容器简介 在Java中,容器是用来存储对象的工具,它们提供了添加、删除和查找...

    java基本集合类,java基本集合类

    Java集合框架是Java编程语言中的一个重要组成部分,它提供了多种数据结构,如列表、队列、集、映射等,方便程序员存储和管理对象。本篇文章将详细讲解Java中的基本集合类ArrayList、LinkedList和Vector,以及HashSet...

    java集合体系结构完结篇-Map集合

    java集合体系结构完结篇-Map集合

    java集合框架详解以及区别

    在本篇文章中,我们将深入探讨Java集合框架中的主要接口和类,以及它们之间的区别。 首先,Java集合框架的核心接口包括`Collection`、`List`、`Set`和`Map`。`Collection`是最基本的接口,它是所有单值容器的父接口...

    java基础集合篇.wps

    整理了一下java基础的集合部分,有list,map,set等及其相关。

    JAVA 集合操作

    这篇博文将深入探讨Java集合框架,包括其基本概念、常见类、接口和实现方式,以及如何进行有效的集合操作。以下是对这些知识点的详细说明: 1. **集合框架**: Java集合框架是一组接口和类,它们提供了在程序中...

    大公司最喜欢问的Java集合类面试题

    本篇文章将着重介绍`Collection`部分,并探讨一些在大公司面试中常见的Java集合类相关问题。 #### 二、Collection接口及其子接口 - **Collection**:这是最基础的集合接口,用于表示一组对象。根据不同的实现,...

    Java集合排序及java集合类详解.doc

    这篇文档将深入解析Java集合的实现机制,并详细阐述其中的类与接口,包括Collection、List、Set和Map。 1. 集合框架概述 Java集合框架是一个统一的体系,它为数据结构(如数组、链表、树等)提供了通用的接口和实现...

    一眼看懂Java中的集合

    此篇文章是学习Java中的集合时自己总结的笔记,主要记录了集合的底层原理、List、Set、Queue等集合的特点、集合的实现类的特点以及各个实现类底层是原理。

    02-Java集合容器面试题(2020最新版)-重点.pdf

    ### Java集合容器知识点详解 #### 一、集合容器概述 - **定义**:集合容器是Java平台提供的标准组件,主要用于存储对象。...通过本篇文章的学习,希望读者能够更好地理解和应用Java集合容器,提升编程技能。

    java高级集合类

    本篇文章将详细介绍三种主要的集合类型:`List`、`Set` 和 `Map` 的特性、区别及联系。 #### 二、`List` 集合 **特点**: - 有序:`List` 维护了一个明确的顺序,通常是元素被添加的顺序。 - 允许重复元素:可以在...

Global site tag (gtag.js) - Google Analytics