首页 > 其他分享 >10.14

10.14

时间:2024-11-20 10:10:24浏览次数:1  
标签:String List products 过滤器 filteredProducts 10.14 name

过滤器模式

下面是一个简单的Java代码展示示例,展示了经过滤器模型的现实:

import java.util.ArrayList;
import java.util.List;

// 实体类
class Product {
    private String name;
    private String category;

    public Product(String name, String category) {
        this.name = name;
        this.category = category;
    }

    public String getName() {
        return name;
    }

    public String getCategory() {
        return category;
    }
}

// 过滤器接口
interface Filter {
    List<Product> filter(List<Product> products);
}

// 具体过滤器实现类:按类别过滤
class CategoryFilter implements Filter {
    private String category;

    public CategoryFilter(String category) {
        this.category = category;
    }

    @Override
    public List<Product> filter(List<Product> products) {
        List<Product> filteredProducts = new ArrayList<>();
        for (Product product : products) {
            if (product.getCategory().equalsIgnoreCase(category)) {
                filteredProducts.add(product);
            }
        }
        return filteredProducts;
    }
}

// 具体过滤器实现类:按名称过滤
class NameFilter implements Filter {
    private String name;

    public NameFilter(String name) {
        this.name = name;
    }

    @Override
    public List<Product> filter(List<Product> products) {
        List<Product> filteredProducts = new ArrayList<>();
        for (Product product : products) {
            if (product.getName().equalsIgnoreCase(name)) {
                filteredProducts.add(product);
            }
        }
        return filteredProducts;
    }
}

// 客户端代码
public class FilterPatternExample {
    public static void main(String[] args) {
        // 创建产品列表
        List<Product> products = new ArrayList<>();
        products.add(new Product("iPhone", "Electronics"));
        products.add(new Product("MacBook", "Electronics"));
        products.add(new Product("T-shirt", "Clothing"));
        products.add(new Product("Jeans", "Clothing"));

        // 创建过滤器
        Filter categoryFilter = new CategoryFilter("Electronics");
        Filter nameFilter = new NameFilter("iPhone");

        // 进行过滤操作
        List<Product> filteredProducts = categoryFilter.filter(products);
        System.out.println("Filtered Products (Category):");
        printProducts(filteredProducts);

        filteredProducts = nameFilter.filter(products);
        System.out.println("Filtered Products (Name):");
        printProducts(filteredProducts);
    }

    private static void printProducts(List<Product> products) {
        for (Product product : products) {
            System.out.println(product.getName() + " - " + product.getCategory());
        }
    }
}
	

在上面的例子中,我们首先确定了一个实体类Product,它具有名称和类别属性。

然后,我们确定了过滤器接口Filter,其中包含一个filter()方法,用于根据过滤器产品列表。

着着,我们发现了两个具体的过滤器实际类:CategoryFilterNameFilterCategoryFilter通过指定类别来过滤产品列表,NameFilter通过指定名称来过滤产品产品列表。这两个滤器类实现了Filter接口中的filter()方法。

最后,在客户端代码中,我们创建了一个产品列表,并创建了两个工具实例:`CategoryFilter

NameFilter`。然后,我们分别使用这两个过滤器来过滤器产品列表,并将过滤器结果打印到控制台上。

通过上面说明的例子可以看出,滤液器模型可以很方便地实现对一个列表中的元素进行过滤的功能,同时也能足够方便地拖放展开和修改滤器的现实,符合开闭原则。

标签:String,List,products,过滤器,filteredProducts,10.14,name
From: https://www.cnblogs.com/luoqingci/p/18556254

相关文章

  • 10.14博客
    经历了几周关于Java的学习后,我想已经初步了解了Java。在这一周中我跟随黑马程序员的脚步初步学习,现在已经安装了jdk环境(当然它不只是一个运行环境,还附带了许多开发工具)并能够用它输出“HelloWworld"。当然,开发工具不止这个,我还学习并安装了Notepad++与idea,关于这两种开发工具,......
  • 2024.10.14 Codeforces Round 978 (Div. 2)
    比赛链接Solved:4/7Upsolved:5/7Rank:447(rated343)D2.Asesino(HardVersion)题意:有n个人,除了一个卧底以外,其他人或者只会说真话,或者只会说谎,且他们知道彼此的身份。卧底只会说谎,但其他人都认为他只会说真话。现在你可以进行若干次询问,每次询问形如问第i个人第j个人是什么......
  • 10.14-10.20 总结
    联考题解:https://www.cnblogs.com/british-union/p/liankao.html如果忽略挂分,这周打的还可以。但是问题是挂了不少分导致实际得分远不如期望得分。做题:做了几道ProjectEuler,有一道没想出来:588,638,457,307。P10353:群论题AGC012F尝试枚举一下前几个的限制,发现限制就是在\([i,......
  • C#/.NET/.NET Core技术前沿周刊 | 第 10 期(2024年10.14-10.20)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等。每......
  • 机器学习周报(10.14-10.20)
    目录摘要Abstract1决策树的剪枝(DecisionTreePruning)1.1预剪枝(Pre-Pruning)1.2后剪枝(Post-Pruning)2集成树(TreeEnsembles)2.1多决策树(MultipleDecisionTrees)2.2有放回抽样(SamplingwithReplacement)2.3随机森林算法(RandomForestAlgorithm)2.4......
  • 发癫(2024.10.14-2024.10.18)
    虽然已临近CSP复赛,但我还在不务正业更改缺省源最近几天莫名其妙的的想改一下我的缺省源。之前和现在的缺省源比较:之前:#include<stdio.h>#include<string.h>//#include<bits/stdc++.h>//#include<iostream>//usingnamespacestd;//usingstd::cin;#defineitnint#d......
  • 10.14 总结
    T1赛时没有想到什么思路。下文中所有的\(t\)代表所有的文件中的一个。考虑DP定义\(f_{i,j}\)为已经考虑完了\(s\)中的前\(i\)个点,匹配了\(t\)的前\(j\)个点的方案数,转移就是:\[\begin{cases}s_{i+1}=t_{j+1}&f_{i+1,j+1}\getsf_{i,j}\\s_{i+1}......
  • 2024.10.14(周一)
    某大银行的一位银行卡办公室的收账经理Liz遇到了一个问题。她每周都收到一份过期未付款的账户名单。这份报告已经从两年前的250个账户增加到现在的1250个账户。为了确定那些严重拖欠债务的账户,Liz需要通读这份报告。严重拖欠债务的账户由几个不同的规则确定,每个规则都要求Liz检查......
  • 10.14
    机器学习61、支持向量到超平面的距离之和称之为间隔2、支持向量机的核心思想是最大化间隔。3、满足Mercer定理的函数可以作为核函数。4. (简答题) 支持向量机算法中,为什么要求原问题的对偶问题?1、简化计算:在SVM中,原始问题是一个带有正则化项的凸二次规划问题。直接求解这个......
  • 【2024.10.14(?) 闲话】飞升
    今日推歌:神曲-RSoundDesign出题人怎么这么没素质。暴力哥获得了320分!而我t4暴力的bitset只开了30000,t2没冲出来,输麻了!我要飞升了!(注:起死回生,飞升上天)(注:某人的rating飞升记录)到底是谁在剪辑这样的视频。但是我要飞升!!!!11其实这是昨天的闲话。但是昨天忘记发了......