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只能存储对象