集合Collection
集合
如何遍历集合
1、通过for循环或者增强for循环
2、通过forEach遍历
3、通过迭代器遍历
4、通过Stream流遍历
过滤(遍历过程中删除某个元素)
1、逆向遍历进行删除
2、Stream流过滤删除
        ArrayList<String> list = new ArrayList<>();
        list.add("111");
        list.add("222");
        list.add("333");
        list.add("444");
        String a = "222";
        Stream<String> stringStream = list.stream().filter(s -> s != a);
        Object[] objects = stringStream.toArray();
        System.out.println(Arrays.toString(objects));
        // list.forEach(System.out::println);
都继承了Iterable
每一个集合对象都有iterator()方法,返回一个Iterator对象	例:
快捷键 itit
List<String> l = Arrays.asList("1", "2", "3");
Iterator<String> iterator = l.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
增强for循环(一个简化的迭代器版本) 快捷键collection.for
List<String> l = Arrays.asList("1", "2", "3");
for (String s : l) {
    System.out.println(s);
}
ArrayList
List去重
list = list.stream().distinct().collect(Collectors.toList());
遍历ArrayList
除了上面的四种方法
- 
List还可以通过toString方法遍历 
- 
将ArrayList转换为数组之后再遍历 
- 
当ArrayList中存放的是String类型的时候 使用String类遍历 
        String str = String.join(",",list);
底层结构和源码分析
transient 表示瞬间、短暂的,表示该属性不会被序列化
他其实就是一个transient 修饰的对象数组 transient Object[] elementData
扩容机制:
当你添加元素的时候超过了原数组长度,他就会进行扩容
- 无参构造 : 默认为0,第一次扩容就是10,第二次扩容按照之前的1.5倍
- 有参构造:默认指定多少就是多少,扩容也是1.5倍扩容
Vector
适合多线程,方法是同步方法 有 synchronize修饰,不过效率很低
HashMap
Map
获取所有的key,
Set
自带去重功能
Collection工具类
java.util.Collections
//反转
Collections.reverse(list);
//排序
Collections.sort(list);
//按比较规则进行排序
Collections.sort(list,Comparator重写里面的compare方法);
//位置交换 指定位置i和j互换元素的位置
Collections.swap(list,int i,int j);
还有查找、替换、克隆(copy)。。。
本文来自博客园,作者:没有烦恼的猫猫,转载请注明原文链接:https://www.cnblogs.com/maomao777/p/16529361.html

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号