今天我们先讲一下Collection:

  1. Collection和Collections的区别:
  • java.util.Collection是一种java集合接口,它提供了对集合对象的基本操作通用接口方法,同时它还有很多具体实现:

注:以上图片只列举常用集合类

  • java.util.Collections是一个包装类,它包含许多有关集合操作的静态多态方法,此类不能实例化,它就像个工具类,服务与java的Collection。有关Collections的具体方法可参考JDK说明文档(部分也可见),下面我举出几个方法示例:
import java.util.Collection;
import java.util.Collections;
import java.util.ArrayList;
import java.util.List; public class test {
private double[] a = {123,33,423,655,4553};
List<Double> l = new ArrayList();
List<Double> l2 = new ArrayList(); public static void main(String[] args) {
new test().sort();
} public void sort(){
for(int i = 0; i<a.length;i++ ){
l.add(a[i]);
}
Collections.sort(l);
for(int i = 0 ;i<a.length;i++){
System.out.println(l.get(i));
}
} }

  运行结果如下:

可在上面代码的基础上添加同类方法,如:

把上面sort()中的Collections.sort(l);--->Collections.shuffle(l);    //随机排序

--->Collections.reverse(l);    //反转排序

--->Collections.min(l);      //返回最小元素(max,最大)

--->Collections.fill(l,"334");   //用334替换所有元素

......

2.常见java容器的比较:

接口

特性

实现类

实现类特性

成员要求

List

线性、有序的存储容器,可通过索引访问元素

ArrayList

数组实现。非同步。

Vector

类似ArrayList,同步。

LinkedList

双向链表。非同步。

Map

保存键值对成员

HashMap

基于哈希表的 Map 接口的实现,满足通用需求

任意Object对象,如果修改了equals方法,需同时修改hashCode方法

TreeMap

默认根据自然顺序进行排序,

或者根据创建映射时提供的 Comparator进行排序

键成员要求实现Comparable接口,或者使用Comparator构造TreeMap。键成员一般为同一类型。

LinkedHashMap

类似于HashMap,但迭代遍历时取得“键值对”的顺序是其插入顺序或者最近最少使用的次序

与HashMap相同

IdentityHashMap

使用==取代equals()对“键值”进行比较的散列映射

成员通过==判断是否相等

WeakHashMap

弱键映射,允许释放映射所指向的对象

ConcurrentHashMap

线性安全的Map

Set

成员不能重复

HashSet

为快速查找设计的Set

元素必须定义hashCode()

TreeSet

保持次序的Set,底层为树结构

元素必须实现Comparable接口

LinkedHashSet

内部使用链表维护元素的顺序(插入的次序)

元素必须定义hashCode()

注:在满足要求的情况下,Map应尽量使用HashMap,Set应尽量使用HashSet

3.Collection的学习:

实例1:

import java.util.*;

public class SimpleCollection{

     public static void main(String[] args){
Collection<Integer> c = new ArrayList<Integer>();
for(int i = 0;i < 10; i++)
c.add(i); //Autoboxing
for(Integer i: c)
System.out.println(i +", ");
}
} /*
0,1,2,3,4,5,6,7,8,9,
*/

  实例2:

/*
如何向Collection添加一组元素
*/
//以下是方法体
Collection<Integer> collection = new ArrayList<Integer>
(Arrays.asList(1,2,3,4,5)); //Array像Collections一样是工具类
Integer[] moreInt = {6,7,8,9,10};
Collection.addAll(Arrays.asList(moreInt)); Collections.addAll( collection,11,12,13,14); //Collection对象作参数
Collections.addAll( collection, moreInt); List<Integer> list = Arrays.asList(16,17,18);
list.set(1,99);
//list.add(21) //错误,asList产生的List的长度不可变,只能修改元素值

下一节学习List部分!!

###    学习从来都是一个过程,对对错错对对...若文中有错误,还望读者批评指出      ###

Java 集合类(一)的更多相关文章

  1. Java集合类--温习笔记

    最近面试发现自己的知识框架有好多问题.明明脑子里知道这个知识点,流程原理也都明白,可就是说不好,不知道是自己表达技能没点,还是确实是自己基础有问题.不管了,再巩固下基础知识总是没错的,反正最近空闲时间 ...

  2. 做JavaWeb开发不知Java集合类不如归家种地

    Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容 ...

  3. 【转载】Java集合类Array、List、Map区别和联系

    Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...

  4. 摘抄转载前辈们的Java集合类总结

    本文摘自 Blue Sky:http://www.cnblogs.com/hubcarl JAVA 集合类介绍和使用 类关系示意图Iterable(接口) │ └--Collection (接口) ├ ...

  5. Java集合类简单总结(重学)

    java集合类简介(重学) 一.Collection(集合).Map接口两者应该是平行关系吧. 1.Map介绍 Map是以键值(key-value)对来存放的,2个值.通过key来找到value(例: ...

  6. Java集合类中的哈希总结

    JAVA集合类中的哈希总结 目 录 1.哈希表 2.Hashtable.HashMap.ConcurrentHashMap.LinkedHashMap.TreeMap区别 3.Hashtable.Ha ...

  7. Java集合类: Set、List、Map、Queue使用场景梳理

    本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E ...

  8. Java 集合类详解(含类图)

    0.参考文献 此图中蓝色为抽象类.深红色表示接口(Arrays除外).绿色表示具体容器类 1.java集合类图 1.1 1.2 上述类图中,实线边框的是实现类,比如ArrayList,LinkedLi ...

  9. Java集合类: Set、List、Map、Queue使用

    目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的 ...

  10. 基础知识《六》---Java集合类: Set、List、Map、Queue使用场景梳理

    本文转载自LittleHann 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E6%8E%92%E5%BA%8F% ...

随机推荐

  1. 基于AE连通性分析

    曾经做管线连通性分析,总觉得ARCGIS应该有现成的方案可以实现,但最终没有找到,后来只好自己写了套代码,但在搜索过程中找到了这样一估代码,当时留了下来,那我现在也把它留下来. Dim pLayer ...

  2. Part 52 Attributes in C#

  3. jQuery中append、insertBefore、after与insertAfter方法注意事项

    这里列的是针对初学jQuery者来说容易搞不懂的部分,我在这里把这些方法列了个清单,希望大家能看的懂.如下: 方法 源包装集/字串 目标包装集体 特性描述 A.append(B) B A 若目标包装集 ...

  4. 16款最佳HTML5超酷动画演示及源码

    1.HTML5/CSS3图片选择动画 可选择多张图片 之前我们已经分享过几款很酷的HTML5图片特效,像HTML5 3D图片折叠特效.HTML5 3D旋转图片相册等应用.今天我们来分享一款既炫酷又实用 ...

  5. 反射-Reflect

    1.得到一份Class(同一个类在JVM中只有一份字节码) 三种方式:类名.class, Class.forName("全限定名");, 对象.getClass(); 基本类型 i ...

  6. C++学习——类的继承

    公有继承(public).私有继承(private).保护继承(protected)是常用的三种继承方式. 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时, ...

  7. [windows phone开发]新生助手的开发过程与体会二

    上一讲咱们谈了新生助手主页的基本的设计,今天我们谈一谈关于展现实景地图时等动画的设计,即Storyboard的应用. 在Windows phone中,Storyboard类表示通过时间线控制动画,并为 ...

  8. nodejs ssh2

    https://www.npmjs.com/package/ssh2 npm install ssh2  ssh2文件下载: //前台命令下发 app.get('/test/fileDownload' ...

  9. 通信录分组并且分组标签悬停划入划出(包含错误信息及修改)--第三方开源--PinnedSectionListView

    PinnedSectionListView在github上的链接地址是:https://github.com/beworker/pinned-section-listview . 下载下来后直接将Pi ...

  10. Python脚本控制的WebDriver 常用操作 <二十六> 上传文件

    测试用例场景 上传文件的方法是找到上传文件的对象,通常是的对象.然后直接往这个对象send_keys,传入需要上传文件的正确路径.绝对路径和相对路径都可以,但是上传的文件必须存在,否则会报错. Pyt ...