[List] 1.单值不可变List 2.排序 3.Array和List互转 4.差集 5.带泛型的空List做返回值 6.addAll 7.逆序

本文主要是介绍[List] 1.单值不可变List 2.排序 3.Array和List互转 4.差集 5.带泛型的空List做返回值 6.addAll 7.逆序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1)Collections.singletonList(x) // 只有1个值的不可变List,修改将抛出异常

package org.example.testSingletonList;import com.google.common.collect.Lists;import java.util.Collections;
import java.util.List;public class Main {public static void main(String[] args) {// 可变的listList<Integer> list = Lists.newArrayList(1, 2, 3);// 不可变,修改将会抛出异常,且是这个列表只有一个值List<Integer> list1 = Collections.singletonList(1);list1.add(1);}
}/*
Exception in thread "main" java.lang.UnsupportedOperationExceptionat java.base/java.util.AbstractList.add(AbstractList.java:153)at java.base/java.util.AbstractList.add(AbstractList.java:111)at org.example.testSingletonList.Main.main(Main.java:12)*/

2)对list指定排序规则

Collections.sort(list, (v1, v2)->{...})

3)List和Array互转

List转Array

package org.example.intArrToList;import java.util.Arrays;
import java.util.List;public class Main {public static void main(String[] args) {List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);Integer[] arr = list.toArray(new Integer[0]);for (int n : arr) {System.out.print(n + " ");}}
}/*
1 2 3 4 5 */

 Array转List // Arrays.stream(xx).boxed(), 因为策划的配置是数组需要转下

public class Main {public static void main(String[] args) {int[] arr = new int[]{1, 2, 3, 4, 5};// 这样子转List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());System.out.println(list);}
}/*
[1, 2, 3, 4, 5]*/

4)removeAll实现2个List的差集(注意一定要用guava的,用Arrays.asList 会有异常)

package org.example;import com.google.common.collect.Lists;import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;/*** @author jianan* @date 2021/7/8 12:13:05*/
public class TestArrayList {public static void main(String[] args) {List<Integer> list = Lists.newArrayList(1, 2, 3);System.out.println(list);List<Integer> list2 = Lists.newArrayList(1, 2, 3);list2.removeAll(list);System.out.println(list2);}
}/*
[1, 2, 3]
[]*/

5.带有泛型的List函数返回值  // 其实我更倾向于Lists.newArrayList()了

return Collections.emptyList();而不要写: return Lists.newArrayList(); 之类的写法了

6.addAll() 实现 一个List直接初始化另外一个List

/*** @author jianan* @date 2021/6/9 12:01:39*/
public class TestList {public static void main(String[] args) {ArrayList<Integer> arr = Lists.newArrayList();arr.add(1);arr.add(2);// 子数组ArrayList<Integer> arr1 = Lists.newArrayList();arr1.add(3);arr1.add(4);// endarr.addAll(arr1);System.out.println(arr);}
}/*
[1, 2, 3, 4]*/

7)Comparator.comparingInt(e -> (int) e).reversed() // 主要对一个类排序,逆序

package org.example.basic;import com.google.common.collect.Lists;import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;public class TestReadOnlyList {public static void main(String[] args) {List<Integer> list = Lists.newArrayList(1, 4, 3, 2, 5, 6, 2);list = list.stream().sorted(Comparator.comparingInt(e -> (int) e).reversed()).collect(Collectors.toList());System.out.println(list);}
}/*
[6, 5, 4, 3, 2, 2, 1]*/

这篇关于[List] 1.单值不可变List 2.排序 3.Array和List互转 4.差集 5.带泛型的空List做返回值 6.addAll 7.逆序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856054

相关文章

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

hdu 1285(拓扑排序)

题意: 给各个队间的胜负关系,让排名次,名词相同按从小到大排。 解析: 拓扑排序是应用于有向无回路图(Direct Acyclic Graph,简称DAG)上的一种排序方式,对一个有向无回路图进行拓扑排序后,所有的顶点形成一个序列,对所有边(u,v),满足u 在v 的前面。该序列说明了顶点表示的事件或状态发生的整体顺序。比较经典的是在工程活动上,某些工程完成后,另一些工程才能继续,此时

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

java 进程 返回值

实现 Callable 接口 与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。 public class MyCallable implements Callable<Integer> {public Integer call() {return 123;}} public static void main(String[] args

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At