集合
集合种类
List list = new ArrayList<>(data); Set set1 = new HashSet<>(data); // 值不重复SortedSet set2 = new TreeSet<>(data); // 值有序并且不重复Set set3 = new LinkedHashSet<>(data); // 值顺序固定并且不重复Map map1 = new HashMap<>(map);SortedMap map2 = new TreeMap<>(map);
ArrayList
声明
ArrayList是顺序表,增删慢,查询快,有序可重复集合只能用来存储自定义应用类型和包装类型 Byte Short Integer Long Float Double Character BooleanList list = new ArrayList();List list = new ArrayList ();List list = new ArrayList<>();ArrayList arr = new ArrayList ();
增删改查元素
List list = new ArrayList ();List list1 = new ArrayList ();list.add(1); list1.add(2);list.addAll(list1);list.add(11);list.add(1, 33);list.set(0, 33);list.remove(0);list.clear();list.get(0)list.size()
遍历几种方式
第一种 List list = new ArrayList<>(Arrays.asList("a", "b", "c")); list.forEach(System.out::println);第二种 list.parallelStream().forEach(System.out::println);第三种 for (String item : list) { System.out.println(item); }第四种 ListIterator iterator = list.listIterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); }
空集合
List anEmptyList = Collections.emptyList();Map anEmptyMap = Collections.emptyMap();Set anEmptySet = Collections.emptySet();
子集合
List list = new ArrayList<>(Arrays.asList("a", "b", "c"));List list1 = list.subList(0,2); // [a, b]
不可变集合
List list = new ArrayList<>(Arrays.asList("a", "b", "c")); List list1 = Collections.unmodifiableList(list); // 不能修改值List unmodifiableList = Collections.singletonList("Only string in the list"); // 只有一个元素的不可变集合
LinkedList
链表,增删快,查询慢 LinkedList arr = new LinkedList ();arr.add("a");arr.addLast("c");arr.addFirst("b");arr.getFirst();arr.getLast();arr.removeFirst();arr.removeLast();arr.clear();
Lists
排序
方式一,实现Comparable接口 public class User implements Comparable { private Integer id; private String name; public User(Integer id, String name) { this.id = id; this.name = name; } @Override public int compareTo(User u) { return id.compareTo(u.id); } public void setId(Integer id) { this.id = id; } public Integer getId() { return id; } public void setName(String name) { this.name = name; } public String getName() { return name; } } List users = new ArrayList (); users.add(new User(1, "小李")); users.add(new User(2, "小红")); Collections.sort(users);第二种,传递Comparator接口实现 Collections.sort(users, new Comparator () { @Override public int compare(User s, User e){ return s.getId().compareTo(e.getId()); } });第三种,lambda表达式 Collections.sort(users, (s, e) -> s.getId().compareTo(e.getId()));第四种,实现类sort users.sort((s, e) -> s.getId().compareTo(e.getId()));
类型转换
List nums = Arrays.asList(1, 2, 3);List strings = nums.stream().map(Object::toString).collect(Collectors.toList());
取交集
List list1 = new ArrayList<>();List list2 = new ArrayList<>();list1.addAll(Arrays.asList(new Integer[]{1,2,3}));list2.addAll(Arrays.asList(new Integer[]{1,2,4}));list1.retainAll(list2);
移动元素
Collections.reverse(list); // 反转Collections.rotate(list1, 1); // 集合元素整体循环后移一位Collections.shuffle(list1); // 重排元素Random random = new Random(12);Collections.shuffle(list1, random); // 随机重排,只会随机一次
删除交集元素
List list1 = new ArrayList<>();List list2 = new ArrayList<>();list1.addAll(Arrays.asList(new Integer[]{1,2,3}));list2.addAll(Arrays.asList(new Integer[]{1,2,4}));list1.removeAll(list2); // [3]
Sets
集合特点
Hash集合底层数据结构是散列表,所以要求元素必须不重复,避免地址对应冲突Hash集合访问的直接是数据地址,查询元素最快,增删元素也快HashSet集合处理地址冲突的方法使用开放定址法HashSet是无序无重复元素集合,使用方法和ArrayList类似LinkedHashSet集合处理地址冲突的方法使用链地址法Set set = new HashSet (); // 快速定位,随机排序TreeSet sortedSet = new TreeSet (); // 按照compareTo排序,操作慢LinkedHashSet linkedhashset = new LinkedHashSet (); // 快速定位,按照插入顺序排序,备份慢
常用方法
set.add(12); set.clear(); set.contains(0);set.isEmpty();set.remove(0);set.size();
根据set创建list
Set set = new HashSet ();set.add("a");set.add("b");方式一 List list = new ArrayList (); list.addAll(set);方式二 List list = set.stream().collect(Collectors.toList());
结语
本文章是java成神的系列文章之一如果你想知道,但是本文没有的,请下方留言我会第一时间总结出来并发布填充到本文