单列集合
单列集合
用Collection来创建ArrayList集合对象(父类接口不能保障有序性)
Collection<Integer> c = new ArrayList<Integer>();
常用方法
.add()----插入元素
remove()----删除元素,根据hashcode和equals来删除,如果没有重写这两个方法,是根据地址来操作。
.lear()----清除所有元素
.isEmpty()----判断是不是空元素。
.contains(***)---判断是否包含元素。
.addAll(----)---添加某集合到该集合中
.containsAll(----)-----看是不是包含这个集合的所有元素
迭代器 Iterator(接口)
//1.获取当前集合的迭代器对象
Iterator<User> iu = cu.iterator();
//2.调用方法判断是否有下一个元素
while(iu.hasNext()){
//3.获取当前元素 保存起来 并且 指针下跳
User u = iu.next();
// u.name = "000";
System.out.println(u);
}
迭代器和增强for循环的区别:

迭代器删除
iu = cu.iterator();
while(iu.hasNext()){
User u = iu.next();
if(u.name.equals("aaa")){
// cu.remove(u);//ConcurrentModificationException//并发异常
// break;
iu.remove();//调用迭代器自身的删除方法 不会触发并发异常
}
}
数组与集合转换
User[] us = new User[cu.size()];
cu.toArray(us);//集合转数组
System.out.println(Arrays.toString(us));
System.out.println();
//数组转集合
List<User> lu = Arrays.asList(us);
lu.forEach(o-> System.out.println(o));
ArrayList
底层为数组模型,默认长度为10
优点:数组模型 元素是连续的 可以直接通过下标获取某个元素(查询快)
缺点:1.每次扩容 老数组成垃圾数据2.新增 删除 都需要元素移动(增删慢)
常用方法
| 方法名 | 返回值 | 注意事项 |
|---|---|---|
| add(int index, E element) | 无 | index>=0 index<=size() |
| addAll(int index, Collection<? extends E> c) | boolean | index>=0 index<=size() |
| remove(int index) | E | 返回被删除的元素 |
| set(int index, E element) | E | 使用第二个参数替换第一个参数下标位的元素 返回被替换的老元素 |
| get(int index) | E | 数组名[下标] |
| indexOf(Object o) | int | 根据元素对象的hashCode() equals()判断 找不到 返回 -1 |
| listIterator()(无参迭代器) | ListIterator | 向迭代器 默认从头号元素开始迭代 |
| listIterator(int index)(有参迭代器) | ListIterator | 从某个下标位开始向左迭代 应该存放起始下标+1 |
双向迭代器 ListIterator
| ListIterator |
集合对象.listIterator() |
|---|---|
| ListIterator |
集合对象.listIterator(int startIndex) |
常用方法
| 方法名 | 返回值 | 功能 |
|---|---|---|
| hasNext() | boolean | 判断有没有下一个元素 |
| next() | E | 获取下一个元素 并且模拟指针下跳 |
| hasPrevious() | boolean | 判断有没有上一个元素 |
| previous() | E | 获取上一个元素 |
| remove() | 无 | 删除当前元素 |
LinkedList
双链结构,查询慢 增删快
常用方法
| 方法名 | 返回值 | 功能 |
|---|---|---|
| addFirst(E e) | 无 | 添加元素在第一个 |
| addLast(E e) | 无 | 添加元素在最后一个 |
| getFirst() | E | 获取第一个元素并返回 |
| getLast() | E | 获取最后一个元素并返回 |
| removeFirst() | E | 删除第一个元素并返回 |
| removeLast() | E | 删除最后一个元素并返回 |
TreeSet、HashSet
无序集合,将有序集合转换成有序集合会自动去重。
若采用比较器接口的方式就可以避免去重
public class Test1 {
public static void main(String[] args) {
ArrayList<String> as = new ArrayList<String>();
as.add("dsgs");
as.add("fdad");
as.add("dsgs");
as.add("khjd");
as.add("qwer");
//将集合中的元素转存入TreeSet 保证按字母表顺序保存 并保留重复字符串
TreeSet<String> tree=new TreeSet<String>((o1,o2)->-1);
for (String s : as) {
tree.add(s);
}
System.out.println(tree);
}
}
stream流可以进行过滤操作
评论