java集合类详解
2017-02-26 本文已影响622人
在南方的北方人_Elijah
Collection
- 集合可以理解为一个动态的对象数组,不同的是对象内容可以任意扩充
- 集合的特点:
性能高
容易扩展和修改 - Collection的常用子类
List
Set
Queue
List
- List接口可以存放人意的数据,而且List接口中内容是可以重复的
- List接口常用子类:
ArrayList
Vector
-常用操作
判断集合是否为空 boolean isEmpty()
查找制定的对象是否存在:int indexOf(Object o)
demo
package com.test.CollectionDemo;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
/**
* Created by elijahliu on 2017/2/26.
*/
public class CollectionDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("a");
for (String i:list) {
System.out.println(i);
}
list.remove(0);//delete
System.out.println(list.indexOf("a"));//search a
System.out.println(list.isEmpty());
}
//vectordemo
public static void ListDemo2(){
List<String> list = new Vector<String>();
list.add("a");
list.add("b");
for (String i : list
) {
System.out.println(i);
}
}
}
ArrayList和Vector比较
比较 | ArrayList | Vector |
---|---|---|
推出时间 | JDK1.2之后推出 | JDK1.0之后推出 |
性能 | 采用异步处理的方式,性能高 | 采用同步处理的方式,性能低 |
线程安全 | 属于非线程安全 | 属于线程安全 |
Set
- set接口中不能加入重复元素,但是可以排序
- 常用子类
散列存放:HashSet
有序存放:TreeSet
demo
public static void setDemo() {
Set<String> s = new HashSet<>();
s.add("a");
s.add("b");
s.add("c");
s.add("d");
s.add("d");
s.add("e");
System.out.println(s);
s = new TreeSet<String>();
s.add("a");
s.add("c");
s.add("b");
s.add("d");
s.add("d");
s.add("e");
System.out.println(s);//打印出来是有序的
}
Iterator
- 集合输出的标准输出
标准做法,使用Iterator接口 - 操作原理
Iterator是专门的迭代输出接口,迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有则把内容取走
demo
public static void IteratorDemo() {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("c");
list.add("b");
list.add("d");
list.add("d");
list.add("e");
Iterator<String> iter = list.iterator();
//这里实例话Iterator有点不同,是通过要进行迭代的实例话对象调用iterator方法来进行实例化的
while (iter.hasNext()) {
System.out.println(iter.next());
}
//hasNext()判断是否下一个元素为空,next()用于获取下一个元素
}
ps:不能在迭代输出的时候进行iter.remove()删除操作,会报错
Map
- 保存形式:
key——>value的方式保存
例子:小明:12312132 - 常用字类:
HashMap:无序存放,Key不允许重复
Hashtable:无需存放,Key不允许重复
demo
public static void mapDemo() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("1", 1);
map.put("2", 2);
map.put("3", 3);
map.put("4", 4);
int i = (int) map.get("3");//提取键值
boolean isKey = map.containsKey("1");//看key是不是存在 返回boolean
boolean isValue = map.containsValue(1);//看value是不是存在,返回boolean
Set<String> s =map.keySet(); //map.keySet()可以将所有的键都提取出来,返回的是一个Set集合
//map.values()返回所有值,返回是一个Collection 集合
Iterator<String> itr= s.iterator();//使用set集合调用迭代器Iterator来进行输出
while (itr.hasNext()) {
System.out.println(itr.next());
}
}