java集合大方向分
-
Map集合接口 以键值对存放元素,键不可重复,值可重复
-
HashMap
-
线程不安全,允许键或值为null
new HashMap().put("key","值可为null")
new HashMap().keyset()键集合.iterator() 其中迭代器中项目可转(String)值
TreeMap
- 线程不安全,按键排序
HashTable
- 使用起来与HashMap类似
-
Collection集合接口
-
List集合接口 有顺序能重复
-
ArrayList
-
查询效率高,增删效率低,线程不安全,底层数组实现
List.removeall(list)以子集合的方法删除集合
LinkedList
-
查询效率低,增删效率高,底层双向循环链表实现
new LinkedList().add("添加元素")
set(0,"替换了第一个元素为当前值")
Vector
-
重量级,占用更多的系统开销,线程安全,底层数组实现
new Vector().subList(1,2)从第一个索引截取2个长度的集合
Stack
-
继承Vector,先进后出,后进先出
注意,push和pop是Stack类独有的,不能将Stack对象向上转型为List,
而indexOf则是List方法,故此类是失败产品
-
Set集合接口 无顺序不能重复
-
HashSet
-
增删速度快,底层数据结构是哈希表
当向hashset添加新对象时,如果集合中没有与新对象的"哈希码"相同的元素,则新对象
肯定不会重复。如果集合中有与新对象的"哈希码"相同的元素,则新对象是否重复
依赖于equals()方法
TreeSet
-
增删效率高,占用空间大
不能重复可自然[例如a,b,c基本数据类型,自定义类对象见范例]排序
-
-
--------------------------------------------------分隔符--------------------------------------------------
TreeSet排序范例
public class Person implements Comparable{
int age = 0; // 属性自行添加
String strname = "";
/* 实现比较器 */
public int compareTo(Object arg0) {
Person p = (Person)arg0;
int num = new Integer(this.age).compareTo(new Integer(p.age));
if(num==0)
return 0;
return num;
} }
==========>>将Person添入TreeSet中
Set treeSet = new TreeSet();
Person person = new Person();
person.setAge(5);
person.setStrname("xiangm1");
Person person2 = new Person();
person2.setAge(3);
person2.setStrname("xiangm2");
treeSet.add(person);
treeSet.add(person2);
Iterator it = treeSet.iterator();
while(it.hasNext())
{
....Person p = (Person)it.next();
....System.out.println("年"+p.getAge()+"名字"+p.getStrname());
}
-
本文详细介绍了Java集合框架的主要组成部分,包括Map、Collection及其子接口List和Set。解释了各种集合类的特点,如HashMap的键可为null、TreeMap的按键排序、ArrayList的查询效率高等,并通过实例展示了TreeSet如何进行自定义排序。
1905

被折叠的 条评论
为什么被折叠?



