集合泛型#yyds干货盘点#

出门莫恨无人随,书中车马多如簇。这篇文章主要讲述集合泛型#yyds干货盘点#相关的知识,希望能为你提供帮助。

集合泛型#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
1、LinkedList类是List接口的一个具体实现类
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 获取数据时不在需要强制类型转换。
集合泛型#yyds干货盘点#

文章图片

集合泛型#yyds干货盘点#

文章图片


    推荐阅读