精华内容
下载资源
问答
  • 编典典你可以获取流List并将其放入TreeSet其中,从中提供一个唯一比较ID的自定义比较器。然后,如果你确实需要一个列表,则可以将该集合放回到ArrayList。import static java.util.Comparator.comparingInt;...

    小编典典

    你可以从获取流List并将其放入TreeSet其中,从中提供一个唯一比较ID的自定义比较器。

    然后,如果你确实需要一个列表,则可以将该集合放回到ArrayList中。

    import static java.util.Comparator.comparingInt;

    import static java.util.stream.Collectors.collectingAndThen;

    import static java.util.stream.Collectors.toCollection;

    ...

    List unique = employee.stream()

    .collect(collectingAndThen(toCollection(() -> new TreeSet<>(comparingInt(Employee::getId))),

    ArrayList::new));

    给出示例:

    List employee = Arrays.asList(new Employee(1, "John"), new Employee(1, "Bob"), new Employee(2, "Alice"));

    它将输出:

    [Employee{id=1, name='John'}, Employee{id=2, name='Alice'}]

    另一个想法可能是使用包装员工的包装器,并使用基于其id的equals和hashcode方法:

    class WrapperEmployee {

    private Employee e;

    public WrapperEmployee(Employee e) {

    this.e = e;

    }

    public Employee unwrap() {

    return this.e;

    }

    @Override

    public boolean equals(Object o) {

    if (this == o) return true;

    if (o == null || getClass() != o.getClass()) return false;

    WrapperEmployee that = (WrapperEmployee) o;

    return Objects.equals(e.getId(), that.e.getId());

    }

    @Override

    public int hashCode() {

    return Objects.hash(e.getId());

    }

    }

    然后包装每个实例,调用distinct(),解开它们并将结果收集在列表中。

    List unique = employee.stream()

    .map(WrapperEmployee::new)

    .distinct()

    .map(WrapperEmployee::unwrap)

    .collect(Collectors.toList());

    实际上,我认为你可以通过提供进行比较的函数来使此包装器通用:

    class Wrapper {

    private T t;

    private Function equalityFunction;

    public Wrapper(T t, Function equalityFunction) {

    this.t = t;

    this.equalityFunction = equalityFunction;

    }

    public T unwrap() {

    return this.t;

    }

    @Override

    public boolean equals(Object o) {

    if (this == o) return true;

    if (o == null || getClass() != o.getClass()) return false;

    @SuppressWarnings("unchecked")

    Wrapper that = (Wrapper) o;

    return Objects.equals(equalityFunction.apply(this.t), that.equalityFunction.apply(that.t));

    }

    @Override

    public int hashCode() {

    return Objects.hash(equalityFunction.apply(this.t));

    }

    }

    映射将是:

    .map(e -> new Wrapper<>(e, Employee::getId))

    2020-03-17

    展开全文
  • 下面进入应用场景,SQL2008数据库取出数据,给ListBox赋值在界面并显示出来,通过窗体应用程序上Button控件,执行移动、移除等功能。 开发环境 开发工具:Microsoft Visual Studio 旗舰版、SQL Server...

        

         大家好,俗称万事开头难,不经历风雨,怎能见彩虹。在此小编给大家带来一个自己练习的小实例,希望与大家一起分享与交流。下面进入应用场景,从SQL2008数据库取出数据,给ListBox赋值在界面并显示出来,通过窗体应用程序上Button控件,执行移动、移除等功能。

    开发环境

         开发工具:Microsoft Visual Studio 旗舰版、SQL Server 2008.

         开发环境:.NET Framework 4 Client Profile.

    实现步骤

    1、搭建MVC框架、建立PERSON_T表格;

        首先,了解什么是MVC框架,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

    我在VS项目中建立一个目录如下图:

    项目结构

       然后,在SQL2008中FMSDB数据库中建立PERSON_T表;具体代码见下方:

    USE [FMSDB]
    GO
    
    /****** Object:  Table [dbo].[PERSON_T]    Script Date: 07/30/2013 15:47:33 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TABLE [dbo].[PERSON_T](
        [NAME] [nvarchar](50) NULL,
        [AGE] [int] NULL
    ) ON [PRIMARY]
    
    GO
     

    2、与SQL 2008建立连接、查询和删除信息;

    首先,给数据库创建一个实例FMSDB,再给FMSDB资料库创建一个PERSON_T表,新添用户“root”,密码“12345”;能成功连接上数据库服务器,

    数据库连接具体见下图:

    数据库连接

    App.config 与数据库连接具体代码见下:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <appSettings>
        <add key="myDatabase.Conn" value="Data Source=localhost,1433;Network Library=DBMSSOCN;Initial Catalog=FMSDB;User ID=root;Password=12345;" />
      </appSettings>
    </configuration>
    SelectGW.cs中具体代码见下:其中需要添加引用System.Configuration、System.Data.SqlClient.
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    
    namespace ListBoxUnit1.DataGateway
    {
        public class SelectGW
        {
            private string connectString = "";
    
            public SelectGW()
            {
                connectString = ConfigurationManager.AppSettings["myDatabase.Conn"];
            }
    
            public SqlConnection GetSqlConnection()
            {
                SqlConnection conn = new SqlConnection(connectString);
                conn.Open();
                return conn;
            }
    
            public DataSet GetPersonData()
            {
                DataSet ds = new DataSet();
                string sqlText = @"SELECT * FROM PERSON_T;";
                try
                {
                    SqlConnection conn = GetSqlConnection();
                    SqlCommand sqlCommand = conn.CreateCommand();
                    sqlCommand.CommandText = sqlText;
                    sqlCommand.CommandType = CommandType.Text;
                    SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
    
                    sqlDataAdapter.Fill(ds);
                }
                catch (Exception ex)
                {
                   
                }
                return ds;
            }
    
            public int DeleteUserInfoData(string NAME)
            {
                string sqlText = @"delete  FROM PERSON_T where NAME='{0}';";
                sqlText = string.Format(sqlText, NAME);
                try
                {
                    SqlConnection conn = GetSqlConnection();
                    SqlCommand sqlCommand = conn.CreateCommand();
                    sqlCommand.CommandText = sqlText;
                    sqlCommand.CommandType = CommandType.Text;
                    int i=sqlCommand.ExecuteNonQuery();
                    return i;
                }
                catch (Exception ex)
                {
                    return 0;
                }
            } 
        }
    }

     

    3、建立一个Person对象,重载用户姓名;

    Person.cs中具体代码见下:

    namespace ListBoxUnit1
    {
        public class Person
        {
            private int _age;
    
            public int Age
            {
                get { return _age; }
                set { _age = value;}
            }
            private string _name;
    
            public string Name
            {
                get { return _name; }
                set { _name = value;}
            }
            public override string ToString()
            {
                return this._name;
            }
        }
    }

    4、在控制层中主要代码如下Controller.cs:

    using System.Collections.Generic;
    using System.Data;
    using ListBoxUnit1.DataGateway;
    
    namespace ListBoxUnit1.Core
    {
       public class Controller
       {
           public SelectGW GW;
           public Controller()
           {
               GW =new SelectGW();
           }
    
           public List<Person> GetUserInfo()
           {
               List<Person> persons = new List<Person>();
               DataSet ds = GW.GetPersonData();
               if (ds.Tables[0].Rows.Count > 0)
                   for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                   {
                       Person p = new Person();
                       p.Name = ds.Tables[0].Rows[i][0].ToString();
                       p.Age = int.Parse(ds.Tables[0].Rows[i][1].ToString());
                       persons.Add(p);
                   }
               return persons;
           }
    
           public bool DeleteUser(string name)
           {
               bool result=false;
               int i= GW.DeleteUserInfoData(name);
               if (i > 0)
               {
                   result = true;
               }
               return result;
           }
       }
    }

    5、在视图层主要代码MainFrom.cs具体如下:

    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    using ListBoxUnit1.Core;
    
    
    namespace ListBoxUnit1
    {
        public partial class MainForm : Form
        {
            private Controller Control;
    
            public MainForm()
            {
                InitializeComponent();
                Control = new Controller();
            }
    
            private void MainForm_Load(object sender, EventArgs e)
            {
    
                List<Person> persons = new List<Person>();
    
                persons = Control.GetUserInfo();
                for (int i = 0; i < persons.Count; i++)
                {
                    listBoxFor.Items.Add(persons[i]);
                    listBoxFor.SelectedIndex = 0;
                }
            }
    
            private void btnAdd_Click(object sender, EventArgs e)
            {
                if (listBoxFor.SelectedItems.Count == 0)
                {
                    MessageBox.Show("没选中添加用户信息");
                }
                else
                {
                    listBoxForeach.Items.Add(listBoxFor.SelectedItem);
                    listBoxFor.Items.Remove(listBoxFor.SelectedItem);
                }
    
            }
    
            private void btnRemove_Click(object sender, EventArgs e)
            {
             
                if (listBoxFor.SelectedItem != null)
                {
                   
                    DialogResult comfirm = MessageBox.Show("确定删除选中信息...", "确定删除", MessageBoxButtons.YesNo,
                                                           MessageBoxIcon.Exclamation);
                    if (comfirm == DialogResult.Yes)
                    {
                        string Name = listBoxFor.SelectedItem.ToString();
                        bool result = Control.DeleteUser(Name);
                        if (result)
                        {
                            listBoxFor.Items.Remove(listBoxFor.SelectedItem);
                        }
                    }
                }
    
            }
    
            private void btnLeft_Click(object sender, EventArgs e)
            {
                if (listBoxForeach.SelectedItems.Count == 0)
                {
                    MessageBox.Show("没选中添加用户信息");
                }
                else
                {
                    listBoxFor.Items.Add(listBoxForeach.SelectedItem);
                    listBoxForeach.Items.Remove(listBoxForeach.SelectedItem);
                }
            }
        }
    }

    效果图

    窗体载入画面

    主画面图片

    可以删除左边选中一栏一个信息,单击移除

    删除选中用户

    删除成功后界面图

    删除成功后

    技术点

    熟悉ListBox的一些基本用法,实现数据移除和移动的功能;

    了解MVC框架后,将MVC框架思想应用到实际例子中;

    建立Person对象,通过重载用户名后,显示在界面的只是Person对象上的一个属性;

    利用SQL进行数据的查询与删除,同时更新视图层的信息;

    熟练运用If…else语句,才能将控制能做好。

    问题疑惑

    怎样能将控制做完善,才能让系统经得起考验,不会出现奔溃或bug。

    怎么让面向对象的编程能够灵活运用起来。

     

    感想

    通过几天的劳作,将代码分享一下,中间肯定存在不足,希望大家提供好的建议,通过这次锻炼,熟悉了面向对象编程、以及MVC系统框架的搭建有了一些了解、掌握建立于SQL数据库的链接的方法等。

    源码下载

    转载于:https://www.cnblogs.com/chenghui/p/3226852.html

    展开全文
  • Git中移除已删除大文件

    万次阅读 2016-02-23 15:53:06
    写在前面大家一定遇到过在使用Git时,不小心将一个很大的文件添加到库,即使删除,记录还是保存了...下面教大家如何彻底删除无效大文件。删除大文件方法很简单,就是先找到大文件对象再删除。 先提交所有更改

    写在前面

    大家一定遇到过在使用Git时,不小心将一个很大的文件添加到库中,即使删除,记录中还是保存了这个文件。以后不管是拷贝,还是push/pull都比较麻烦。今天在上传工程到github上,发现最大只能上传100MB大小文件,在本地git库中有一个150MB文件,虽然已经删除,但还保存了记录。下面教大家如何从库中彻底删除无效大文件。


    删除大文件

    方法很简单,就是先找到大文件对象再删除

    1. 先提交所有更改

       $ git commit -am "commit all"
    2. 对仓库进行gc操作

       $ git gc
    3. 运行count-objects 查看空间使用,size-pack 是以千字节为单位表示的 packfiles 的大小,因此已经使用了大约150MB 。

       $ git count-objects -v

      这里写图片描述

    4. 运行底层命令 git verify-pack 以识别出大对象,对输出的第三列信息即文件大小进行排序.

      $ git verify-pack -v .git/objects/pack/pack-8eaeb...9e.idx | sort -k 3 -n | tail -3

      这里写图片描述

      注:可以看到对底下那个就是大文件。

    5. 使用 rev-list 命令,传入 - -objects 选项,它会列出所有 commit SHA 值,blob SHA 值及相应的文件路径,这样查看 blob 的文件名。

      $ git rev-list --objects --all | grep 185ab8d

      这里写图片描述

    6. 将该文件从历史记录的所有 tree 中移除。

      $ git log --pretty=oneline --branches -- spark-assembly-1.3.1-hadoop2.4.0.jar

      这里写图片描述

    7. filter-branch 命令重写从 646784 开始的所有 commit 才能将文件从 Git 历史中完全移除。

      git filter-branch --index-filter 'git rm --cached --ignore-unmatch  spark-assembly-1.3.1-hadoop2.4.0.jar' -- 646784d95f347749517a67c50c117f4bf85d0b42..

      这里写图片描述

      注:- -index-filter 选项类似于 - -tree-filter 选项,但这里不是传入一个命令去修改磁盘上签出的文件,而是修改暂存区域或索引。不能用 rm file 命令来删除一个特定文件,而是必须用git rm - -cached 来删除它 ── 即从索引而不是磁盘删除它。这样做是出于速度考虑 ── 由于 Git 在运行你的 filter 之前无需将所有版本签出到磁盘上,这个操作会快得多。也可以用 - -tree-filter 来完成相同的操作。git rm- -ignore-unmatch 选项指定当你试图删除的内容并不存在时不显示错误。最后,因为你清楚问题是从哪个 commit 开始的,使用 filter-branch 重写自 64678 这个 commit 开始的所有历史记录。不这么做的话会重写所有历史记录,花费不必要的更多时间。

    8. 现在历史记录中已经不包含对那个文件的引用了。不过 reflog 以及运行 filter-branch 时 Git 往.git/refs/original 添加的一些 refs 中仍有对它的引用,因此需要将这些引用删除并对仓库进行 repack 操作。在进行 repack 前需要将所有对这些 commits 的引用去除。

      \$ rm -Rf .git/refs/original
      \$ rm -Rf .git/logs/
      \$ git gc
    9. 查看空间使用

       $ git count-objects -v
    10. 如果真的要完全把这个对象删除,可以运行 git prune 命令。


    【完】

    展开全文
  • PDF去除水印(6)-根据区域移除对象 我们用鼠标左键拉选需要去除的部分。 新建动作,在左边“位置和大小”...在移除选项,找到“移除所选对象”,双击加入动作列表。 最后点击“OK”,保存。 在动作列表中选...

    PDF去除水印(6)-根据区域移除对象

    我们用鼠标左键拉选需要去除的部分。

    新建动作,在左边“位置和大小”选项中找到“选择区域内部或外部的对象”动作,双击加入。

    在右侧选择:定义涉及媒体框左下方的区域。吸管选项选择从选区获取区域。 

     

    右侧的下方设置选择对象:区域内部。 

    在移除选项中,找到“移除所选对象”,双击加入动作列表。

    最后点击“OK”,保存。

    在动作列表中选择刚刚创建的动作,点击运行。  

    最后,我们看到,根据区域移除对象成功。 

     

     

     

    展开全文
  • 动软.Net代码生成器Codematic 是一款为C#数据库程序员设计的自动代码生成器,Codematic 生成的代码基于面向对象的思想和三层架构设计,结合了Petshop经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想...
  • 图像处理函数详解——bwareaopen

    万次阅读 2011-03-22 20:31:00
    功能:用于从对象中移除小对象。用法:BW2 = bwareaopen(BW,P)BW2 = bwareaopen(BW,P,CONN)BW2 = bwareaopen(BW,P,CONN)从二值图像中移除所有小于P的连通对象。CONN对应邻域方法,默认为8。例子:originalBW = ...
  • 同样,必须插入创建的新对象移除已删除的对象。 可以在每次修改对象模型时对数据库进行相应的修改,但这样会产生大量规模很的数据库调用,从而导致速度变慢。而且这样做还需要有一个对整个交互过程都开发的事务...
  • 4.1 数组到对象 95 4.1.1 元素、属性、方法与成员 97 4.1.2 哈希表、关联型数组 98 4.1.3 访问对象属性 98 4.1.4 调用对象方法 100 4.1.5 修改属性与方法 101 4.1.6 使用this值 102 4.1.7 构造器函数 102 4.1.8 ...
  • JavaScript对象之数组(二)

    千次阅读 2020-03-19 17:53:49
    通过设置length可以数组的末尾移除项或向数组添加新项 把一个值放在超出当前数组大小的位置上时,会重新计算数组长度值,长度值等于最后一项索引加1 选择练习1 下面这段代码运行结果是?(选择一项) var arr=...
  • C#入门算法:判断一串代码中的大括号、中括号...当您在列表中添加一项,称为推入元素,当您列表中移除一项时,称为弹出元素。 二、使用步骤 1.栈的基本操作 Pop() 移除并返回在 Stack 的顶部的对象  push() 向
  • Array数组(2)数组长度说明:通过设置length可以数组的末尾移除项或向数组添加新项把一个值放在超出当前数组大小的位置上时,会重新计算数组长度值,长度值等于最后一项索引加1选择练习1下面这段代码运行结果是?...
  • Array数组(2)数组长度说明:通过设置length可以数组的末尾移除项或向数组添加新项把一个值放在超出当前数组大小的位置上时,会重新计算数组长度值,长度值等于最后一项索引加1选择练习1下面这段代码运行结果是?...
  • 与高斯低通滤波器相比,焦点分析的平均滤波器显示出对非地面物体的去除效果更好,尤其是在较大的窗口尺寸下,DTM中非地面物体的细节几乎25×25或更大的窗口消失了。 基于DTM斜率的滤波器已创建了一个裸露模型,...
  • 集合框架一

    2018-11-29 20:49:25
    将1~100之间的所有正整数存放在一个List集合中,并将集合中索引位置是10的对象从集合中移除  2.分别向Set集合以及List集合中添加"A"、"a"、"c"、"C"、"a"5个...
  • java栈和队列

    2021-04-26 16:29:32
    查看堆栈顶部的对象,但不堆栈中移除它。 Object pop( ) 移除堆栈顶部的对象,并作为此函数的值返回该对象。 队列 队列是一种特殊的线性表,先进先出 LinkedList类实现了Queue接口,因此我们可以把...
  • python中pop()函数的使用方法发布时间:2020-08-10 09:11:22来源:亿速云阅读:72作者...python中pop()函数的用法:pop()函数用于移除列表中的一个元素(默认最后一个元素),并且返回列表中移除的元素对象。函数语...
  • 【Object-C】内存管理

    千次阅读 2013-04-06 13:59:22
    Object-c内存管理原则 1. 通过分配或复制创建的对象...3. 向集合添加对象时它就被retain,集合移除对象时就被release.释放集合对象会释放该集合的所有对象 4. 确保有多少alloc,copy,mutableCopy或retain消息就有
  • index():列表找出某个值第一个匹配项的索引位置。 append():在列表末尾添加新对象。 extend():在列表末尾一次性追加另一个序列的多个值(另一个list) insert(index,obj):在列表的指定位置插入对象。 pop():...
  • Iterator模式:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部的细节 ...void remove() 迭代器指向的集合中移除迭代器返回的最后一个元素 例 import java.util.Itera...
  • 地图/雷达

    2020-12-19 15:37:37
    移除对象 调整缩放 结束 相关食谱 地图/雷达 问题 你需要一个地图或雷达式的UI项目来显示玩家视野之外的物体位置。 解决方案 下面是我们要做的一个例子。 项目设置 为了说明这个功能,我们将一个...
  • Nim是一种数学策略游戏,其中两个玩家轮流不同的堆中移除(或“对齐”)对象。 在每一回合中,玩家必须移除至少一个物体,并且可以移除任何数量的物体,只要它们都来自同一堆或同一堆即可。 游戏的目的是避免拿到...
  • 上一章节,我们介绍了AssetBundle的基础原理,并且讲解了加载AssetBundle到加载Asset的各种过程,以及底层API实现等细节内容,这一章,我们会讨论下...当对象从活动场景移除时,Unity并不会自动卸载对象。Ass...
  • Picture Cutout Guide是一款简单易用的图片抠图工具,与先前发表的Image Resize Guide同属Two Pilots公司产品,,Image Resize Guide侧重于对图片不需要的对象进行智能移除,而Picture Cutout Guide则是主要用于将图片...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 279
精华内容 111
关键字:

从对象中移除小对象