Java集合

集合和数组的区别

数组的长度是固定的,集合的不是

数组可以存储基本数据类型和引用数据类型,集合只能存储引用数据类型

数组存储的元素必须是同一种数据类型,集合存储的对象可以是不同的数据类型

集合的常用类



哪些集合类是线程安全的?

Vector:就比Arraylist多了个 synchronized (线程安全)

HashTable:就比hashMap多了个synchronized (线程安全)

ConcurrentHashMap:是Java5中支持高并发、高吞吐量的线程安全HashMap实现

List和Map的遍历和删除

        List list=new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        //使用foi循环
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        //使用iterator
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //使用for each
        list.forEach(s -> {
            System.out.println(s);
        });
        Map map=new HashMap<>();
        map.put("A","a");
        map.put("B","b");
        map.put("C","c");
      for (Map.Entry mp: map.entrySet()){
          System.out.println(mp.getKey());
          System.out.println(mp.getValue());
      }
      for (String key:map.keySet()){
          System.out.println(key);
      }
      for (String value:map.values()){
          System.out.println(value);
      }
       //使用foi删除
      for (int i = list.size()-1; i >= 0; i--) {
          list.remove(i);
      }
      

集合使用comparator排序

        List users=new ArrayList<>();
        User user=new User("张三",18);
        User user1=new User("李四",16);
        User user2=new User("王五",25);
        users.add(user);
        users.add(user1);
        users.add(user2);
        //使用Comparator排序
//        Collections.sort(users, new Comparator() {
//            @Override
//            public int compare(User o1, User o2) {
//                return o1.getAge()-o2.getAge();
//            }
//        });
        //使用Stream流排序
        users=users.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
        users.forEach(user3 -> {
            System.out.println(user3);
        });

集合、数组、字符串之间的相互转换

        List list = new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");
        //使用list.toArray将集合转换成数组
        String[] array = list.toArray(new String[list.size()]);
        //使用Arrays.asList将数组转换成集合
        List strings = Arrays.asList(array);
        //使用Arrays.toString将数组转换成字符串
        String arrayString = Arrays.toString(array);
        //使用split将字符串分割成数组
        String s="a,b,c";
        String[] split = s.split(",");
        //将字符串转换成集合
        List strings1 = Arrays.asList(s.split(","));
        //将集合转换成,分割的字符串
        String join = String.join(",", list);

ArrayList和LinkedList的区别

ArrayList是动态数组,LinkedList是双向链表

从查询的角度:ArrayList查询更快,链表是从前往后依次查找,数组是根据索引进行查找

从添加和删除的角度:LinkedList添加和删除更快,链表改变指针的指向,数组要改变数组的元素下标

Array和ArrayList的区别

ArrayList是一个动态数组,大小是自动扩展的

Array可以存储基本数据类型和对象,ArrayList只能存储对象

展开阅读全文

页面更新:2024-05-19

标签:成数   数组   线程   字符串   数据类型   元素   角度   区别   对象   动态

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top