出门莫恨无人随,书中车马多如簇。这篇文章主要讲述集合泛型#yyds干货盘点#相关的知识,希望能为你提供帮助。
文章图片
8.1 Collection List Set
- ArrayList
package cn.webrx;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.List;
public class List1 public static void main(String[] args)
//实例化ArrayList
List list1 = new ArrayList();
ArrayList list2 = new ArrayList();
var list = new ArrayList();
var list3 = List.of(1,2,3,"hello","php",new Date());
//array list相互转换
int[] arr = new int[]1,2,3;
List lis = new ArrayList(Arrays.asList(arr));
System.out.println(lis.get(0));
System.out.println(lis.size());
//增加元素
list.add("java");
list.add(100);
list.add(new Date());
list.add(0, "javascript");
//输出集合容器中的元素个数
System.out.println(list.size());
list.remove(2);
//删除一个元素
list.remove(2);
//删除一个元素
list.add(1,new Date());
System.out.println(String.format("%1$tF %1$tT",list.get(1)));
//清空集合,删除所有元素.size() 为0
//list.clear();
list.add("python");
System.out.println(list.indexOf("java"));
list.set(2, "python");
//修改指定索引位置的对象System.out.println(list.contains("java"));
System.out.println("-".repeat(50));
//list.remove("python");
//list.removeIf(e->
e.toString().contains("py"));
//list.removeIf(e->
true);
System.out.println(list.size());
for(Object o : list)
System.out.println(o);
Object[] os = list.toArray();
System.out.println(os.length);
System.out.println("-".repeat(50));
list.addAll(2, List.of(100,200,300,400,500));
//将另一个list增加进来
list.forEach(System.out::println);
- ArrayList和Array数组类型转换
package cn.webrx;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class List2 public static void main(String[] args)
Integer[] nums = new Integer[]10, 20, 30, 40, 50 ;
//固定尺寸的List
List<
Integer>
list = Arrays.asList(nums);
List list2 = List.of(1, 2, 3);
System.out.println(list.size());
System.out.println(list2.size());
//list.clear();
异常
//list2.clear();
异常//数组 转 List
List list3 = new ArrayList(list);
System.out.println(list3.size());
list3.add(600);
list3.addAll(List.of(700,800,900));
System.out.println(list3.size());
System.out.println(list3);
System.out.println(Arrays.toString(nums));
//数组//List 转到 数组
Object[] ns = list3.toArray();
System.out.println(ns.length);
for(Object i : ns)
System.out.println(i);
package cn.webrx;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class List3 public static void main(String[] args) List<
String>
list = new ArrayList<
String>
();
list.addAll(List.of("java", "php", "python"));
list.add(0, "html");
list.add(2, "javascript");
list.set(3, "mysql");
System.out.println(list.size());
// 5
System.out.println(list.get(1));
// java
System.out.println(list.indexOf("mysql"));
// 3
System.out.println(list.contains("python"));
// true// list.forEach(System.out::println);
list.stream().filter(e ->
e.startsWith("java")).forEach(System.out::println);
for (String s : list)
System.out.println(s);
System.out.println(list);
Integer[] nn =10, 20, 30, 40 ;
System.out.println(nn);
System.out.println(Arrays.toString(nn));
System.out.println(List.of(nn));
//固定尺寸的List
System.out.println(new ArrayList<
Integer>
(List.of(nn)));
//Listvar lista = new ArrayList<
String>
(List.of("a","b","c"));
var listb = new ArrayList<
String>
(List.of("aa","bb","cc","dd"));
lista.addAll(listb);
lista.addAll(listb);
lista.addAll(listb);
System.out.println(lista);
- HashSet
package cn.webrx;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;
import javax.imageio.ImageIO;
public class Set1 public static void main(String[] args) throws FileNotFoundException, IOException
Set<
Integer>
sets = new HashSet<
>
();
sets.add(10);
sets.add(10);
sets.add(10);
sets.add(10);
sets.add(10);
// System.out.println(sets.size());
// sets.clear();
// sets.contains(10)
// sets.remove(10);
// 编写双色球效果
Random rand = new Random();
// 生成蓝色 1 (1-16)
int blue = rand.nextInt(16) + 1;
// 生成红色 5 (1-33)
Set<
Integer>
reds = new HashSet<
>
();
while (reds.size() <
5)
reds.add(rand.nextInt(33) + 1);
System.out.println(reds);
System.out.println(blue);
List<
Integer>
list = new ArrayList<
Integer>
(reds);
list.sort((a, b) ->
a - b);
list.add(blue);
System.out.println(list);
BufferedImage i = new BufferedImage(350, 100, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = i.createGraphics();
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
g.setFont(new Font("", Font.BOLD, 25));
g.setStroke(new BasicStroke(3));
for (int n = 0;
n <
list.size();
n++)
g.setColor(Color.BLUE);
int x = n * 55 + 12;
int y = 28;
String sc = String.format("%02d", list.get(n));
if (n <
5)
g.setColor(Color.RED);
g.drawOval(x, y, 50, 50);
g.drawString(sc, x + 12, y + 33);
continue;
g.drawOval(x, y, 50, 50);
g.drawString(sc, x + 12, y + 33);
g.dispose();
ImageIO.write(i, "png", new FileOutputStream("ok.png"));
//Runtime run = Runtime.getRuntime();
//run.exec("cmd /k start ok.png");
- LinkedList
2、LinkedList 类用于创建链表数据结构
3、插入或者删除元素时,它提供更好的性能
package cn.webrx;
import java.util.LinkedList;
import java.util.List;
public class LinkedList1
public static void main(String[] args)
LinkedList<
String>
list = new LinkedList<
>
();
list.add("java");
list.add("html");
list.add("mysql");
//list.clear();
//list.isEmpty();
list.remove("java");
list.remove(0);
list.addFirst("java");
list.addLast("python");
System.out.println(list);
package cn.webrx;
import java.util.LinkedList;
public class Stack<
E>
private E e;
private LinkedList<
E>
stack = new LinkedList<
>
();
private int i = 0;
public Stack() public int size()
return this.i;
public void add(E e)
++i;
stack.addLast(e);
public E get()
--i;
return stack.removeLast();
8.2 Map
- HashMap
package cn.webrx;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Map1 public static void main(String[] args)
// Book b1 = new Book(100,"《java项目实战开发》",18);
// Book b2 = b1;
// b2.setPrice(90);
// System.out.println(b1 == b2);
//true false
// System.out.println(b1.getPrice());
// keys values 键值对数组
Map<
String, Book>
m = new HashMap<
>
();
m.put("java1", new Book(100, "《java项目实战开发》", 18));
m.put("java2", new Book(100, "《java项目实战开发》", 18));
m.put("java3", new Book(100, "《java项目实战开发》", 18));
m.put("java3", new Book(100, "《java项目实战开发》", 18));
m.put("php", new Book(101, "《php入门开发》", 15));
System.out.println(m.containsKey("php"));
//true
System.out.println(m.containsValue(m.get("php")));
//true// m.clear();
// m.size();
// m.isEmpty()
// 移除元素
Book book = m.remove("java3");
// System.out.println(book);
System.out.println(m.containsValue(book));
//false// System.out.println(m.size());
Set<
String>
keys = m.keySet();
for (String k : keys)
System.out.printf("%s = %s %n", k, m.get(k));
// 遍历值集合Collection
Collection<
Book>
vs = m.values();
for (Book bk : vs)
System.out.println(bk);
m.forEach((k, v) ->
System.out.println(k);
System.out.println(v);
);
8.3 泛型编程泛型是jdk5引入的类型机制,就是将类型参数化,它是早在1999年就制定的jsr14的实现。
泛型机制将类型转换时的类型检查从运行时提前到了编译时,使用泛型编写的代码比杂乱的使用Object并在需要时再强制类型转换的机制具有更好的可读性和安全性。
泛型程序设计意味着程序可以被不同类型的对象重用,类似c++的模版。
泛型对于集合类尤其有用,如ArrayList。这里可能有疑问,既然泛型为了适应不同的对象,ArrayList本来就可以操作不同类型的对象呀?那是因为没有泛型之前采用继承机制实现的,实际上它只维护了一个Object对象的数组。结果就是对List来说它只操作了一类对象Object,而在用户看来却可以保存不同的对象。
泛型提供了更好的解决办法——类型参数,如:
List list = new ArrayList();
这样解决了几个问题:
1 可读性,从字面上就可以判断集合中的内容类型;
【集合泛型#yyds干货盘点#】2 类型检查,避免插入非法类型。
3 获取数据时不在需要强制类型转换。
文章图片
文章图片
推荐阅读
- Apache Linkis 中间件架构及快速安装
- #yyds干货盘点# 解决华为机试(MP3光标位置)
- Docker consul的容器服务更新与发现
- #yyds干货盘点#计算机编码规则之:Base64编码
- 7 款可替代 top 命令的工具!
- # yyds干货盘点 # 手把手教你使用Python提取快递信息
- 游戏开发新手入门教程12:游戏积木之动画
- ZFS学习笔记
- @悟空体验官们!邀朋友体验,得悟空熊周边盲盒啦!