java集合框架提供了一套性能优良、使用方便的接口和类,他们位于java.util包中
Collection接口存储一组不唯一,无序的对象
List接口存储一组不唯一,有序(插入顺序)的对象
Set接口存储一组唯一,无序的对象
Map接口存储一组键值对象,提供key到value的映射
ArrayList优点遍历元素和随机访问元素的效率比较高。缺点:添加和删除需要大量移动元素效率低
例:
import java.util.ArrayList;
import java.util.Iterator;
public class CollectionDemo {
public static void main(String[] args) {
ArrayList<String> a = new ArrayList<String>();
a.add("张三");
a.add("李四");
a.add("王五");
a.add("你好");
// 长度
int b = a.size();
System.out.println(b);
// 输入要查找的 元素返回下标值
int c = a.indexOf("王五");
System.out.println(c);
// 判断是否为空
boolean flag = a.isEmpty();
System.out.println(flag);
// 修改 前面输入下标
a.set(1, "赵四");
// 读取
System.out.println(a.get(1));
// 遍历循环用来 读取ArrayList里面的内容
for (String k : a) {
System.out.println(k);
}
// for循环的办法读取
for (int i = 0; i < a.size(); i++) {
System.out.print(a.get(i) + "\t");
}
// 迭代器的读取 了解就行
Iterator<String> it = a.iterator();
// 当他有下一个是进入下一步
while (it.hasNext()) {
// 输出值
System.out.print(it.next());
}
}
}
LinkedList:优点插入删除元素时效率较高,缺点:遍历和随机访问元素效率低。
例:
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<String> li = new LinkedList<String>();
// 添加
li.add("张三");
// 在第一个前面添加
li.addFirst("李四");
// 在第一个前面添加
li.offerFirst("王五");
// 在最后一个后面添加
li.addLast("赵四");
/*
* //迭代的方法 判断是否为空 不为空就 进去 while(!li.isEmpty()){ //删除查找 删一个找一个
* System.out.println(li.removeFirst());
* //System.out.println(li.removeLast()); //新的方法独有方法 pool
* //System.out.println(li.pollFirst()); }
*/
// for 循环 查找
/*
* for(int i = 0;i<li.size();i++){ //get方法 获取输出
* System.out.println(li.get(i)); }
*/
/*
* //foreach 循环遍历 for(String k:li){ System.out.println(k); }
*/
// 查找第一个
String a1 = li.getFirst();
// 自己独有的方法 peekFirst 用来获取第一个
String a2 = li.peekFirst();
System.out.println(a1);
System.out.println(a2);
}
}
HashSet:优点添加速度快,查询快,删除快。缺点:无序。
HashSet的唯一性基于 重写Hashcode和equals放的基础上
例:
/**
* HashSet 集合
* 添加 删除最快
* Set没有get方法
* 其中的各个方法都是一样的 因为他们都是同一个祖父类的
* 其中的各个用途都是差不多一样的
*
*/
import java.util.HashSet;
import java.util.Iterator;
public class HashSetDemo {
public static void main(String[] args) {
//创建方法
HashSet<String> a = new HashSet<String>();
a.add("张三");
a.add("李四");
int s = a.size();
System.out.println(s);
//迭代器的 输出方式 因为 Set没有 get方法
Iterator<String> b = a.iterator();
while(b.hasNext()){
System.out.println(b.next());
}
//也可以使用 for each 的方式 遍历
for(String k:a){
System.out.println(k);
}
}
}
最后注意:TreeSet需要重写Comparable方法