Java 集合类(一)
今天我们先讲一下Collection:
- 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 集合类(一)的更多相关文章
- Java集合类--温习笔记
最近面试发现自己的知识框架有好多问题.明明脑子里知道这个知识点,流程原理也都明白,可就是说不好,不知道是自己表达技能没点,还是确实是自己基础有问题.不管了,再巩固下基础知识总是没错的,反正最近空闲时间 ...
- 做JavaWeb开发不知Java集合类不如归家种地
Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容 ...
- 【转载】Java集合类Array、List、Map区别和联系
Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...
- 摘抄转载前辈们的Java集合类总结
本文摘自 Blue Sky:http://www.cnblogs.com/hubcarl JAVA 集合类介绍和使用 类关系示意图Iterable(接口) │ └--Collection (接口) ├ ...
- Java集合类简单总结(重学)
java集合类简介(重学) 一.Collection(集合).Map接口两者应该是平行关系吧. 1.Map介绍 Map是以键值(key-value)对来存放的,2个值.通过key来找到value(例: ...
- Java集合类中的哈希总结
JAVA集合类中的哈希总结 目 录 1.哈希表 2.Hashtable.HashMap.ConcurrentHashMap.LinkedHashMap.TreeMap区别 3.Hashtable.Ha ...
- Java集合类: Set、List、Map、Queue使用场景梳理
本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E ...
- Java 集合类详解(含类图)
0.参考文献 此图中蓝色为抽象类.深红色表示接口(Arrays除外).绿色表示具体容器类 1.java集合类图 1.1 1.2 上述类图中,实线边框的是实现类,比如ArrayList,LinkedLi ...
- Java集合类: Set、List、Map、Queue使用
目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的 ...
- 基础知识《六》---Java集合类: Set、List、Map、Queue使用场景梳理
本文转载自LittleHann 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E6%8E%92%E5%BA%8F% ...
随机推荐
- MongoDB - The mongo Shell, Data Types in the mongo Shell
MongoDB BSON provides support for additional data types than JSON. Drivers provide native support fo ...
- WPF视频教程系列笔记
视频二:XAML基础 1.顶级元素 <Window></Window>,<Page></Page>,<Application></Ap ...
- Mysql中IFNULL与IN操作
Mysql IFNULL操作 项目中用到的,当SQL查询某个字段为空的时候,查询结果中设置其值为默认值.最笨的方法当然是对查询结果进行处理了,遍历查询结果,当为空的时候,设置其值: 代码如下 复制代码 ...
- 8款给力HTML5/CSS3应用插件 可爱的HTML5笑脸
1.HTML5/CSS3实现笑脸动画 非常可爱 今天我们要分享一款基于纯CSS3实现的笑脸动画,我们只要在面部滑动鼠标,即可让人物的眼睛嘴巴动起来,实现微笑的效果,还挺可爱的. 在线演示 源码下载 2 ...
- POJ 2287 Tian Ji -- The Horse Racing(贪心)
题意:田忌和齐王有n匹马,进行n局比赛,每局比赛输者给胜者200,问田忌最多能得多少钱. 分析:如果田忌最下等的马比齐王最下等的马好,是没必要拿最下等的马和齐王最好的马比的.(最上等马同理) 因此,如 ...
- CentOS6.4下使用默认的PDF文档阅读器出现乱码的解决方案
方法一:修改/etc/fonts/conf.d/49-sansserif.conf文件,如下: 1: <?xml version="1.0"?> 2: <!DOC ...
- iPhone Tableview分批显示数据
//非原创 iPhone Tableview分批显示数据是本文要介绍的内容,主要讲解的是数据的显示.iPhone屏幕尺寸是有限的,如果需要显示的数据很多,可以先数据放到一个table中,先显示10 ...
- 《Apache之虚拟主机的配置》——RHEL6.3
1.安装httpd软件包: Yum install httpd 2.启动apache服务: [root@redhat Desktop]# /etc/init.d/httpd start Startin ...
- js实现模拟自动点击按钮,并且在10秒倒计时之后疯狂点击
需求来自于csdn问答,可以利用这个原理做秒杀抢单外挂. 代码示例如下: <html> <head> <meta charset="utf-8"/&g ...
- 重写DataGridViewColumn
做个项目需要用到DataGridView,这个控件还是挺好用的,但是今天却发现无法实现自己想要的功能.主要是DataGridViewCheckBoxColumn这个列虽然是提供了复选框,但是却未能在复 ...