- 浏览: 359606 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
驭乐MJ:
你好,我卸载rar后,按命令执行安装unrar或者是p7zip ...
Ubuntu rar 乱码问题 -
郭建雄:
不错,受用了,谢谢你的分享 !
java线程中的interrupt,isInterrupt,interrupted方法 -
zuosheng:
...
用ViewFlipper实现各种切换动画 -
lxtkong-029:
原来一直不是很清楚,看来你的文章明白了,太感谢了!
java线程中的interrupt,isInterrupt,interrupted方法 -
ihopethatwell:
嗯,看到了,要在项目中添加jni
Ubuntu 10.04安装android NDK
这里说的集合指的是小写的collection,集合有4种基本形式,其中前三种的父接口是Collection。
List 关注事物的索引列表
Set 关注事物的唯一性
Queue 关注事物被处理时的顺序
Map 关注事物的映射和键值的唯一性
一、Collection 接口
Collection接口是 Set 、List 和 Queue 接口的父接口,提供了多数集合常用的方法声明,包括 add()、remove()、contains() 、size() 、iterator() 等。
add(E e) 将指定对象添加到集合中
remove(Object o) 将指定的对象从集合中移除,移除成功返回true,不成功返回false
contains(Object o) 查看该集合中是否包含指定的对象,包含返回true,不包含返回flase
size() 返回集合中存放的对象的个数。返回值为int
clear() 移除该集合中的所有对象,清空该集合。
iterator() 返回一个包含所有对象的iterator对象,用来循环遍历
toArray() 返回一个包含所有对象的数组,类型是Object
toArray(T[] t) 返回一个包含所有对象的指定类型的数组
二、几个比较重要的接口和类简介
1、List接口
List 关心的是索引,与其他集合相比,List特有的就是和索引相关的一些方法:get(int index) 、 add(int index,Object o) 、 indexOf(Object o) 。
ArrayList 可以将它理解成一个可增长的数组,它提供快速迭代和快速随机访问的能力。
LinkedList 中的元素之间是双链接的,当需要快速插入和删除时LinkedList成为List中的不二选择。
Vector 是ArrayList的线程安全版本,性能比ArrayList要低,现在已经很少使用
2、Set接口
Set关心唯一性,它不允许重复。
HashSet 当不希望集合中有重复值,并且不关心元素之间的顺序时可以使用此类。
LinkedHashset 当不希望集合中有重复值,并且希望按照元素的插入顺序进行迭代遍历时可采用此类。
TreeSet 当不希望集合中有重复值,并且希望按照元素的自然顺序进行排序时可以采用此类。(自然顺序意思是某种和插入顺序无关,而是和元素本身的内容和特质有关的排序方式,譬如“abc”排在“abd”前面。)
3、Queue接口
Queue用于保存将要执行的任务列表。
LinkedList 同样实现了Queue接口,可以实现先进先出的队列。
PriorityQueue 用来创建自然排序的优先级队列。
4、Map接口
Map关心的是唯一的标识符。他将唯一的键映射到某个元素。当然键和值都是对象。
HashMap 当需要键值对表示,又不关心顺序时可采用HashMap。
Hashtable 注意Hashtable中的t是小写的,它是HashMap的线程安全版本,现在已经很少使用。
LinkedHashMap 当需要键值对,并且关心插入顺序时可采用它。
TreeMap 当需要键值对,并关心元素的自然排序时可采用它。
三、ArrayList的使用
ArrayList是一个可变长的数组实现,读取效率很高,是最常用的集合类型。
1、ArrayList的创建
在Java5版本之前我们使用:
List list = new ArrayList();
在Java5版本之后,我们使用带泛型的写法:
List<String> list = new ArrayList<String>();
上面的代码定义了一个只允许保存字符串的列表,尖括号括住的类型就是参数类型,也成泛型。带泛型的写法给了我们一个类型安全的集合。关于泛型的知识可以参见这里。
2、ArrayList的使用:
List<String> list = new ArrayList<String>();
list.add("nihao!");
list.add("hi!");
list.add("konikiwa!");
list.add("hola");
list.add("Bonjour");
System.out.println(list.size());
System.out.println(list.contains(21));
System.out.println(list.remove("hi!"));
System.out.println(list.size());
关于List接口中的方法和ArrayList中的方法,大家可以看看JDK中的帮助。
3、基本数据类型的的自动装箱:
我们知道集合中存放的是对象,而不能是基本数据类型,在Java5之后可以使用自动装箱功能,更方便的导入基本数据类型。
List<Integer> list = new ArrayList<Integer>();
list.add(new Integer(42));
list.add(43);
4、ArrayList的排序:
ArrayList本身不具备排序能力,但是我们可以使用Collections类的sort方法使其排序。我们看一个例子:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("nihao!");
list.add("hi!");
list.add("konikiwa!");
list.add("hola");
list.add("Bonjour");
System.out.println("排序前:"+ list);
Collections.sort(list);
System.out.println("排序后:"+ list);
}
}
编译并运行程序查看结果:
排序前:[nihao!, hi!, konikiwa!, hola, Bonjour]
排序后:[Bonjour, hi!, hola, konikiwa!, nihao!]
5、数组和List之间的转换
从数组转换成list,可以使用Arrays类的asList()方法:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String[] args) {
String[] sa = {"one","two","three","four"};
List list = Arrays.asList(sa);
System.out.println("list:"+list);
System.out.println("list.size()="+list.size());
}
}
6、Iterator和for-each
在for-each出现之前,我们想遍历ArrayList中的每个元素我们会使用Iterator接口:
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
// Arrays类为我们提供了一种list的便捷创建方式
List<String> list = Arrays.asList("one", "two", "three", "four");
// 转换成Iterator实例
Iterator<String> it = list.iterator();
//遍历
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
在for-each出现之后,遍历变得简单一些:
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
// Arrays类为我们提供了一种list的便捷创建方式
List<String> list = Arrays.asList("one", "two", "three", "four");
for (String s : list) {
System.out.println(s);
}
}}
发表评论
-
通过FutureTask设置超时,用于请求网络,执行任何异步超时任务
2013-10-10 15:53 0public class TestConnectTimeOu ... -
java Future 接口介绍
2011-11-23 15:47 1035在Java中,如果需要设定 ... -
Java 判断文件的编码
2011-05-23 18:28 958首先,不同编码的文本,是根据文本的前两个字节来定义其编 ... -
Eclipse中附上/载入Java(JDK) 源代码
2011-05-18 15:04 1061在Eclipse中,大家都习惯按F3键方便地查看类、方法 ... -
java 经典排序算法
2011-05-18 14:43 6551、冒泡排序 Bubble Sort 最简单的排序方法 ... -
java版的二分查找算法
2011-05-18 11:42 735/** * @param data 从小到大排好序的 ... -
JNI javah 未找到 javadoc: 错误 - 找不到类
2011-03-30 12:18 2464在编译生成 .class 文件后,进入该文件目录 ,执行类似 ... -
Java反射机制学习笔记
2011-03-15 16:57 984一. 反射机制描述 Java的反射机制允许 ... -
Java关键字new和newInstance的区别方法
2011-03-15 15:07 716在初始化一 ... -
Java内存管理的9个小技巧
2011-03-02 22:55 6701、别用new Boolean()。 在很多场景中Boole ... -
java 正则表达式 常用符号总结
2011-02-28 13:40 1025•句点.表示单个字符 •方括号[]表示可能出现字符集里 ... -
全局变量的优缺点
2011-02-15 10:06 2505使用全局变量的优点是:可以减少变量的个数,减少由于实际参数和形 ... -
JAVA代码编写的30条建议
2011-02-14 17:57 694(1) 类名首字母应该大写。字段、方法以及对象(句 ... -
java传值or传引用 二
2011-02-14 16:32 840(接一) 5. 如何实现类似 swap 的方法 传 ... -
java传值or传引用 一
2011-02-14 16:25 908第一种说法 1. 简单类型是按值传递的 Jav ... -
java线程中的interrupt,isInterrupt,interrupted方法
2011-02-11 10:23 5532在java的线程Thread类中有三个方法,比较容易混淆,在这 ... -
进程和线程的区别
2011-02-11 09:51 855通俗一点说 ... -
Java线程之守护线程(Daemon)
2011-02-06 12:59 720Java有两种Thread:“守 ... -
java 异常总汇
2011-01-26 16:52 8851. java.lang.nullpointerexcepti ... -
关于java的集合类,以及HashMap中Set的用法!
2011-01-25 17:37 4233关于java的集合类,以及HashMap中Set ...
相关推荐
java集合 java集合思维导图 java集合总结
xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...
键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台java 集合练习题
java集合基础习题及答案,
Java集合整体讲解,其中包含了Collection,Map,Iterator和一些工具类,以及集合整体大框架
java 集合 List arrayList vector map set
Java 集合排序 及java集合类 详解.pdf
该文档主要详细总结了Java集合的相关知识,包括Collection和Map接口、Collection接口的子接口List和Set接口以及具体的实现类、存储原理等;Map接口的子接口HashMap、LinkedHashMap、TreeMap、Properties等
Java 集合排序及java 集合类详解,Java里面最重要、最常用也就是集合那部分了,能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。本教程详细解释了关于Java中的集合是如何实现的, 以及他们的实现原理...
Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结
内含大量java集合框架方面常被面试官问到的经典面试题。
Java集合排序及java集合类详解,对list,set,map等java集合进行详细讲解
集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中
关于java集合资料的整理 集合接口:6个接口,表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类,对集合接口的部分实现。可扩展为自定义集合类。 实现类:8个实现类,对接口的具体实现。 在很大程度上,...
Java集合框架详解Java集合框架详解Java集合框架详解
java集合框架图java集合框架图java集合框架图java集合框架图java集合框架图
Java集合详解,详细讲解java的集合类,对java集合类的最详细的讲解。我自己的总结,保证大家看了很有收获
java集合
java 集合分组排序帮助类有好的意见可以互相交流不甚感激