创建和使用集合
-
定义:集合是一个可变数组
-
List集合存储有序可重复序列
点击查看详细代码
| import java.util.*; |
| |
| public class List01 { |
| public static void main(String[] args) { |
| |
| |
| |
| List list = new ArrayList(); |
| List list1 = new LinkedList(); |
| List list2 = new Vector(); |
| |
| |
| |
| |
| list.add(12345); |
| list.add("狗剩"); |
| list.add(true); |
| list.add(null); |
| list.add("abcd"); |
| |
| list1.add(12345); |
| list1.add("狗剩"); |
| list1.add(true); |
| list1.add(null); |
| list1.add("abcd"); |
| |
| |
| |
| |
| int l1 = 0; |
| int l2 = 0; |
| String[] strings = new String[5]; |
| int[] ints = new int[5]; |
| for(Object c : list){ |
| if(c instanceof String){ |
| strings[l1++] = (String) c; |
| }else if(c instanceof Integer){ |
| ints[l2++] = (int)c; |
| } |
| } |
| System.out.println("String数组:" + Arrays.toString(strings)); |
| System.out.println("int数组:" + Arrays.toString(ints)); |
| |
| |
| |
| |
| System.out.println("遍历前:"+list1.size()); |
| String[] strings1 = new String[5]; |
| int[] ints1 = new int[5]; |
| Iterator iterator = list1.iterator(); |
| |
| while (iterator.hasNext()){ |
| Object next = iterator.next(); |
| if(next instanceof String){ |
| |
| strings1[l1++] = (String)next; |
| |
| |
| iterator.remove(); |
| }else if(next instanceof Integer){ |
| ints1[l2++] = (Integer)next; |
| iterator.remove(); |
| } |
| } |
| System.out.println("遍历后:"+list1.size()); |
| System.out.println("数组1:"+Arrays.toString(strings1)); |
| System.out.println("数组2:"+Arrays.toString(ints1)); |
| } |
| } |
运行结果:
| String数组:[狗剩, abcd, null, null, null] |
| int数组:[12345, 0, 0, 0, 0] |
| 遍历前:5 |
| 遍历后:2 |
| 数组1:[null, null, 狗剩, abcd, null] |
| 数组2:[0, 12345, 0, 0, 0] |
基础扩展
点击查看详细代码
| import java.util.HashSet; |
| import java.util.Set; |
| import java.util.TreeSet; |
| |
| public class Set01 { |
| public static void main(String[] args) { |
| |
| Set set = new HashSet(); |
| Set set1 = new TreeSet(); |
| |
| |
| set.add("二狗"); |
| set.add("abcd"); |
| set.add(0123); |
| set.add(true); |
| set.add(0123); |
| set.add(null); |
| System.out.println(set); |
| } |
| } |
运行结果:
| [null, 二狗, 83, abcd, true] |
点击查看详细代码
| import java.util.*; |
| |
| public class Map01 { |
| public static void main(String[] args) { |
| Map map = new HashMap(); |
| Map map1 = new TreeMap(); |
| |
| |
| map.put(null, null); |
| map.put("age", 23); |
| map.put("sex", 0); |
| map.put("sex", 0); |
| |
| |
| |
| |
| Set entryset = map.entrySet(); |
| Iterator iterator = entryset.iterator(); |
| while (iterator.hasNext()){ |
| Object next = iterator.next(); |
| System.out.println(next); |
| } |
| System.out.println(); |
| |
| |
| |
| |
| map.forEach((key, value) -> { |
| System.out.println("key:"+key+",value:"+value); |
| }); |
| } |
| } |
| |
特性
- ArrayList集合查询快,增删慢;LinkedList集合查询慢,增删快;Vector集合线程安全,效率低
点击查看详细代码
| import java.util.*; |
| |
| public class List02 { |
| |
| |
| |
| |
| |
| public static void main(String[] args) { |
| |
| long l1 = System.currentTimeMillis(); |
| |
| List list = new ArrayList(); |
| for(int i = 0; i<1000000; i++){ |
| list.add(i); |
| } |
| long l2 = System.currentTimeMillis(); |
| System.out.println("ArrayList:" + (l2 - l1)); |
| System.out.println(); |
| |
| long l3 = System.currentTimeMillis(); |
| List list1 = new LinkedList(); |
| for(int i = 0; i<1000000; i++){ |
| list1.add(i); |
| } |
| long l4 = System.currentTimeMillis(); |
| System.out.println("LinkedList:" + (l4 - l3)); |
| System.out.println(); |
| |
| long l5 = System.currentTimeMillis(); |
| List list2 = new Vector(); |
| for(int i = 0; i<1000000; i++){ |
| list2.add(i); |
| } |
| long l6 = System.currentTimeMillis(); |
| System.out.println("Vector:" + (l6 - l5)); |
| System.out.println(); |
| |
| } |
| |
| } |
插入1000000个数运行结果:
| ArrayList:32 |
| |
| LinkedList:198 |
| |
| Vector:20 |
插入10000000个数运行结果:
| ArrayList:2821 |
| |
| LinkedList:5205 |
| |
| Vector:801 |
点击查看详细代码
| import java.util.HashSet; |
| import java.util.Set; |
| import java.util.TreeSet; |
| |
| public class Set02 { |
| |
| |
| |
| |
| |
| public static void main(String[] args) { |
| long l1 = System.currentTimeMillis(); |
| Set Set = new HashSet(); |
| for(int i = 0; i < 1000000; i++){ |
| Set.add(i); |
| } |
| long l2 = System.currentTimeMillis(); |
| System.out.println("HashSet:" + (l2 - l1)); |
| |
| long l3 = System.currentTimeMillis(); |
| Set set1 = new TreeSet(); |
| for(int i = 0; i < 1000000; i++){ |
| set1.add(i); |
| } |
| long l4 = System.currentTimeMillis(); |
| System.out.println("TreeSet:" + (l4 - l3)); |
| |
| } |
| |
| } |
插入100000个数的运行结果
插入10000000个数的运行结果
点击查看详细代码
| public class Map02 { |
| |
| |
| |
| |
| |
| public static void main(String[] args) { |
| long l1 = System.currentTimeMillis(); |
| HashMap hashMap = new HashMap(); |
| for(int i = 0; i<100000; i++){ |
| hashMap.put(i,i); |
| } |
| long l2 = System.currentTimeMillis(); |
| System.out.println("HashMap:" + (l2 - l1)); |
| |
| long l3 = System.currentTimeMillis(); |
| LinkedHashMap hashMap2 = new LinkedHashMap(); |
| for(int i = 0; i<100000; i++){ |
| hashMap2.put(i,i); |
| } |
| long l4 = System.currentTimeMillis(); |
| System.out.println("TreeMap:" + (l4 - l3)); |
| } |
| |
| } |
插入100000个数的运行结果:
插入10000000个数的运行结果:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术