博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java成神之——集合框架之ArrayList,Lists,Sets
阅读量:5094 次
发布时间:2019-06-13

本文共 5165 字,大约阅读时间需要 17 分钟。

集合

集合种类

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成神的系列文章之一如果你想知道,但是本文没有的,请下方留言我会第一时间总结出来并发布填充到本文

转载于:https://www.cnblogs.com/ye-hcj/p/9724082.html

你可能感兴趣的文章
什么样的公司卖什么货!
查看>>
cassandra vs mongo (1)存储引擎
查看>>
[原创]BizTalk 开发系列
查看>>
Action中动态方法的调用 Action中通配符的使用 Result的配置
查看>>
uva10382
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
常见编程语言入口特征
查看>>
[Leetcode 94] 72 Binary Tree Inorder Traversal
查看>>
Vue音乐项目笔记(三)
查看>>
遍历Map对象
查看>>
计算剪贴板里仿制的代码行数
查看>>
YTU 2578: 分数减法——结构体
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
Ansible条件测试
查看>>
面向对象程序设计 作业一
查看>>
移动端tap或touch类型事件的点透问题认识
查看>>
重温html5的新增的标签和废除的标签
查看>>
bootstrap的select2校验及不影响原来的格式
查看>>
CMake高级用法
查看>>
第五章
查看>>