当前位置: 首页 > news >正文

怎么做网站关键字搜索建筑安全网

怎么做网站关键字搜索,建筑安全网,网站开发与设计教程,搭建网站服务器多少钱一、List 基础概念1.1 什么是 List#xff1f;List 就像是一个智能书架#xff1a;可以按顺序存放书籍#xff08;元素#xff09;每本书都有固定位置#xff08;索引#xff09;可以随时添加、取出或重新排列书籍// 创建一个书架#xff08;List#xff09; ListS…一、List 基础概念1.1 什么是 ListList 就像是一个智能书架可以按顺序存放书籍元素每本书都有固定位置索引可以随时添加、取出或重新排列书籍 // 创建一个书架List ListString bookshelf new ArrayList(); 1.2 List 的核心特性特性说明生活类比有序性元素按添加顺序存储书架上的书按放入顺序排列可重复允许相同元素多次出现同一本书可以有多个副本索引访问通过位置编号快速获取元素通过书架编号找书动态扩容自动调整存储空间智能书架自动扩展1.3 List 家族成员二、List 基本操作 2.1 创建 List 的三种方式 // 方式1标准创建推荐 ListString fruits new ArrayList();// 方式2快速初始化 ListInteger numbers Arrays.asList(1, 2, 3, 4, 5);// 方式3不可变列表Java 9 ListString colors List.of(红, 绿, 蓝); 2.2 添加元素 - 丰富你的书架 fruits.add(苹果); // 末尾添加 fruits.add(0, 香蕉); // 指定位置插入 fruits.addAll(Arrays.asList(橙子, 葡萄)); // 批量添加System.out.println(fruits); // 输出: [香蕉, 苹果, 橙子, 葡萄] 2.3 访问元素 - 查找书籍 // 获取单个元素 String firstFruit fruits.get(0); // 香蕉// 检查元素是否存在 boolean hasApple fruits.contains(苹果); // true// 查找元素位置 int appleIndex fruits.indexOf(苹果); // 1 2.4 修改元素 - 替换书籍 // 替换指定位置的元素 String oldFruit fruits.set(1, 青苹果); System.out.println(被替换的水果: oldFruit); // 苹果2.5 删除元素 - 清理书架 // 按索引删除 String removed fruits.remove(0); // 删除香蕉// 按元素值删除 boolean isRemoved fruits.remove(葡萄); // true// 批量删除 fruits.removeAll(Arrays.asList(橙子, 青苹果));// 清空书架 fruits.clear(); 三、遍历 List 的多种方式 3.1 基础遍历方法 // 1. for循环索引访问 for (int i 0; i fruits.size(); i) {System.out.println((i1) . fruits.get(i)); }// 2. 增强for循环 for (String fruit : fruits) {System.out.println(fruit); }3.2 使用迭代器 // 3. Iterator遍历 IteratorString iterator fruits.iterator(); while (iterator.hasNext()) {String fruit iterator.next();if (fruit.equals(葡萄)) {iterator.remove(); // 安全删除} } 3.3 Java 8 高级遍历 // 4. forEach方法 fruits.forEach(fruit - System.out.println(fruit));// 5. 方法引用 fruits.forEach(System.out::println);// 6. 并行流遍历大数据量 fruits.parallelStream().forEach(fruit - {// 并行处理逻辑 }); 3.4 遍历性能对比遍历方式10万元素耗时适用场景for循环5ms需要索引时增强for7ms简单遍历Iterator8ms需要删除元素时forEach10ms函数式编程并行流3ms大数据量处理四、List 高级操作 4.1 排序操作 ListInteger numbers Arrays.asList(5, 2, 9, 1, 3);// 自然排序升序 Collections.sort(numbers); // 输出: [1, 2, 3, 5, 9]// 自定义排序降序 numbers.sort((a, b) - b - a); // 输出: [9, 5, 3, 2, 1]// 对象排序 ListBook books new ArrayList(); books.add(new Book(Java编程, 99)); books.add(new Book(Python入门, 69));books.sort(Comparator.comparing(Book::getPrice)); 4.2 过滤与转换 // 过滤高价水果 ListString expensiveFruits fruits.stream().filter(fruit - fruit.length() 2).collect(Collectors.toList());// 水果名称转大写 ListString upperCaseFruits fruits.stream().map(String::toUpperCase).collect(Collectors.toList()); 4.3 数学统计 IntSummaryStatistics stats numbers.stream().mapToInt(Integer::intValue).summaryStatistics();System.out.println(最大值: stats.getMax()); System.out.println(最小值: stats.getMin()); System.out.println(平均值: stats.getAverage()); System.out.println(总数: stats.getSum()); 4.4 列表转换 // List转数组 String[] fruitArray fruits.toArray(new String[0]);// 数组转List不可修改 ListString fixedList Arrays.asList(fruitArray);// 数组转List可修改 ListString modifiableList new ArrayList(Arrays.asList(fruitArray)); 五、ArrayList 深度解析 5.1 内部结构ArrayList 就像是一个智能伸缩书架 // 简化版ArrayList实现 public class SimpleArrayListE {private Object[] elements; // 存储元素的数组private int size; // 当前元素数量public SimpleArrayList() {this.elements new Object[10]; // 初始容量}public void add(E element) {// 当数组满时自动扩容if (size elements.length) {Object[] newArray new Object[elements.length * 2];System.arraycopy(elements, 0, newArray, 0, size);elements newArray;}elements[size] element;} } 5.2 扩容机制5.3 性能特点操作时间复杂度说明get(index)O(1)直接通过索引访问add(element)O(1)平均时间复杂度add(index, element)O(n)需要移动后续元素remove(index)O(n)需要移动后续元素contains(element)O(n)需要遍历查找六、LinkedList 深度解析6.1 内部结构LinkedList 就像是一个带前后指针的书本链 // 简化版链表节点 class NodeE {E item; // 当前元素NodeE next; // 下一个节点NodeE prev; // 上一个节点Node(NodeE prev, E element, NodeE next) {this.item element;this.next next;this.prev prev;} } 6.2 操作原理 // 在指定位置插入元素 public void add(int index, E element) {// 1. 找到目标位置的节点NodeE target getNode(index);// 2. 创建新节点NodeE newNode new Node(target.prev, element, target);// 3. 调整前后节点指针target.prev.next newNode;target.prev newNode; } 6.3 性能对比 ArrayList操作ArrayListLinkedList适用场景随机访问⚡️ 快 (O(1)) 慢 (O(n))需要频繁按索引访问头部插入 慢 (O(n))⚡️ 快 (O(1))需要频繁在开头添加尾部插入⚡️ 快 (O(1))⚡️ 快 (O(1))在末尾添加中间插入 慢 (O(n))⚡️ 快 (O(1))需要频繁在中间插入内存占用较少仅需存储元素较多每个元素需要额外指针内存敏感场景七、实战应用案例7.1 学生成绩管理系统 class Student {private String name;private int score;// 构造方法、getter/setter省略 }public class GradeSystem {private ListStudent students new ArrayList();// 添加学生public void addStudent(Student student) {students.add(student);}// 按分数排序public void sortByScore() {students.sort(Comparator.comparingInt(Student::getScore).reversed());}// 查找前N名学生public ListStudent getTopStudents(int n) {return students.stream().sorted(Comparator.comparingInt(Student::getScore).reversed()).limit(n).collect(Collectors.toList());}// 统计分数分布public MapString, Long getScoreDistribution() {return students.stream().collect(Collectors.groupingBy(s - {int score s.getScore();if (score 90) return 优秀;if (score 80) return 良好;if (score 60) return 及格;return 不及格;},Collectors.counting()));} } 7.2 购物车实现 class CartItem {private String productId;private String name;private double price;private int quantity;// 构造方法、getter/setter省略 }public class ShoppingCart {private ListCartItem items new LinkedList();// 添加商品public void addItem(CartItem newItem) {// 检查是否已存在for (CartItem item : items) {if (item.getProductId().equals(newItem.getProductId())) {item.setQuantity(item.getQuantity() newItem.getQuantity());return;}}items.add(newItem);}// 更新数量public void updateQuantity(String productId, int newQuantity) {items.removeIf(item - item.getProductId().equals(productId));if (newQuantity 0) {items.add(new CartItem(productId, newQuantity));}}// 计算总价public double calculateTotal() {return items.stream().mapToDouble(item - item.getPrice() * item.getQuantity()).sum();}// 生成订单public Order checkout() {Order order new Order();order.setItems(new ArrayList(items));order.setTotal(calculateTotal());items.clear();return order;} }八、最佳实践与性能优化8.1 选择正确的 List 实现场景推荐实现理由读多写少ArrayList随机访问快频繁增删LinkedList插入删除快多线程环境CopyOnWriteArrayList线程安全固定大小列表Arrays.asList()内存优化不可变列表List.of()安全简洁8.2 性能优化技巧   预分配容量减少扩容开销 // 预计存储1000个元素 ListString largeList new ArrayList(1000);       批量操作减少方法调用  // 差: 多次调用add for (String item : items) {list.add(item); }// 好: 批量添加 list.addAll(items);避免在循环中调用size // 差: 每次循环都调用size() for (int i 0; i list.size(); i) {// ... }// 好: 缓存size值 int size list.size(); for (int i 0; i size; i) {// ... } 使用subList视图 // 创建子列表视图不复制数据 ListString sub list.subList(0, 5); 九、常见问题与解决方案 (30分钟) ConcurrentModificationException问题遍历时修改集合 ListString list new ArrayList(Arrays.asList(A, B, C)); for (String s : list) {if (B.equals(s)) {list.remove(s); // 抛出异常} } 解决方案 // 1. 使用Iterator的remove方法 IteratorString it list.iterator(); while (it.hasNext()) {String s it.next();if (B.equals(s)) {it.remove(); // 安全删除} }// 2. 使用Java 8 removeIf list.removeIf(B::equals);// 3. 创建副本遍历 new ArrayList(list).forEach(s - {if (B.equals(s)) {list.remove(s);} }); 性能陷阱LinkedList的随机访问问题 LinkedListInteger list new LinkedList(); // 填充数据...// 随机访问性能差 for (int i 0; i list.size(); i) {Integer value list.get(i); // O(n)操作 } 解决方案 // 1. 使用迭代器 IteratorInteger it list.iterator(); while (it.hasNext()) {Integer value it.next(); }// 2. 使用增强for循环 for (Integer value : list) {// ... }// 3. 转换为ArrayList只读场景 ListInteger arrayList new ArrayList(list);对象相等性判断问题自定义对象在List中的行为解决方案 class Person {String name;Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;Person person (Person) o;return Objects.equals(name, person.name);}Overridepublic int hashCode() {return Objects.hash(name);} } 十、总结与进阶学习  List 知识体系总结
http://www.zqtcl.cn/news/123284/

相关文章:

  • 网站建设开票内容百度浏览器广告怎么投放
  • 深圳公司网站建立小程序商店制作
  • 网站建设知识网犀牛云做网站多少钱
  • 东莞seo优化推广重庆做网络优化公司电话
  • 网站建设的设计思路高校建设网站的特色
  • 宁波网站建设八宝山做网站的公司
  • 哪里有网站建设多少钱网站建设哪家服务态度好
  • 白云区网站开发公司备案不关闭网站的方法
  • 男的做那个视频网站家用电脑可以做网站服务器
  • 网站建设的行业客户烟台市未成年思想道德建设网站
  • 设计个网站要多少钱鼓楼网站开发
  • 东莞外贸网站搭建制作北京app开发制作
  • 优化网站公司外包微信商城怎么开店
  • 网站设计的导航栏怎么做东莞seo网络优化
  • wordpress直接上传视频网站吗做网站软件
  • 电脑维修网站模板下载来个网站吧好人一生平安2021
  • 做公益选哪个网站好网站建设方案多少钱
  • 丰台做网站的公司vs2015 手机网站开发
  • 宝思哲手表网站qq官网登录入口网页版
  • 二手书网站开发设计太原建设网站的公司
  • 江门网站seo推广qq代挂网站建设
  • 合肥制作网站企业做文字logo的网站
  • php 网站提速有没有帮人做简历的网站
  • 九江建网站报价比特币网站做任务
  • 电子商务网站开发目的和意义网站建设湖南岚鸿建设
  • 网站改版提交给百度个人定做衣服店
  • 网站接广告网站用途说明
  • 中兴豫建设管理有限公司网站中小企业网站建设济南兴田德润o厉害吗
  • 枣庄有做网站的吗网站 关键词 多少个
  • 广州10大网站服务品牌做网站买了域名之后