小编byt*_*its的帖子

在 VBA 或 Excel 中,如果数组包含该值,我如何遍历数组并用 1 填充某些单元格,如果不包含该值则用 0 填充?

我从 Wix 收到一个数组,其中包含用户通过表单选择的课程。

从 Wix 接收的数组示例,其中用户选择了 2 门课程。这个数组被放置在一个单元格中。

["VBA","Django"]
Run Code Online (Sandbox Code Playgroud)

上面的数组放置在我的 excel 文件中的一个单元格中,我从这里将单元格变为红色并用课程填充 VBA 数组:

Dim data() As Variant
    Dim arrStr As String
    Dim dataItems As Long
    Dim i As Long
    Dim IndividualCourses(1 To 9) As String

    arrStr = Range("T3")
    arrStr = Replace(Replace(arrStr, "[", "{"), "]", "}")
    data = Application.Evaluate(arrStr)
    dataItems = Application.CountA(data)
    For i = 1 To dataItems
        IndividualCourses(i) = data(i)
    Next i
Run Code Online (Sandbox Code Playgroud)

但用户可以选择 1 到 10 门课程。所有课程的数组:

["JS","Python","VBA","Java","Spring","C++","C#",".NET","Django","CSS"]

我想根据从 Wix 收到的数组,将 1 放在数组中存在的课程的单元格中,将 0 放在其他课程中。

例如,这个课程选择了["VBA","Django"],它应该在VBA单元格中放置1,在Django单元格中放置1,在剩余课程单元格中放置0,因为我想看看用户选择了哪些课程.

这个复杂的问题有什么想法吗?!?

excel vba excel-formula dynamic-arrays office365

5
推荐指数
1
解决办法
132
查看次数

我如何解释方法 compare(Function<? super T,? extends U> keyExtractor) 的参数?

方法的完整签名:

public static <T, U extends Comparable<? super U>> Comparator<T> comparing(
            Function<? super T, ? extends U> keyExtractor)

Run Code Online (Sandbox Code Playgroud)

我正在学习 lambda 表达式,我有这段代码比较员工列表并按姓名字段对它们进行排序:

List<Employee> employees = new ArrayList<>();

Collections.sort(employees, Comparator.comparing(Employee::getName));

Run Code Online (Sandbox Code Playgroud)

该代码工作正常,但我查看了文档中的 Comparator 功能接口,并且找到了方法“比较()”的签名。

comparing(Function<? super T,? extends U> keyExtractor)
Run Code Online (Sandbox Code Playgroud)

我没有得到比较()的参数。我怎么知道参数接受 lambda 表达式?以及如何解释约束:<? 超级T,?扩展 U> keyExtractor?

我知道 super 是什么意思?在层次继承中必须是类型 T 或以上,并且 ? 在层次继承中也必须是 U 类型及以下类型。但是我们怎么能在我的例子中转述呢?

可以这样解释: ? 继承链中必须是Employees及以上类型,并且继承链中name字段必须是Employees或以下类型?或者 ?必须是类型 Array List 及以上和 ? 必须是类型员工列表及以下?

java generics lambda java-8 generic-constraints

4
推荐指数
1
解决办法
514
查看次数

为什么编译器在具有双界泛型类型时不将 T(interface) 推断为实现 T 的类?

我有一个类 CBound,它实现了两个接口 IBound1 和 Ibound2:

class CBound implements IBound1, IBound2 {}
Run Code Online (Sandbox Code Playgroud)

我有一个通用方法,它接受一个实现 IBound1 和 Ibound2 接口的类类型作为类型参数:

 public static <T extends IBound1 & IBound2> void getData(T list) {
      //Some code...
}
Run Code Online (Sandbox Code Playgroud)

我用 CBound 类的实现创建了一个 IBound1 类型的对象:

 IBound1 a = new CBound();
 getData(a); // doesn't work
Run Code Online (Sandbox Code Playgroud)

为什么 obj a 不能作为 getData() 的参数?

当我更改代码时:

CBound b = new CBound();
getData(b); // It works fine
Run Code Online (Sandbox Code Playgroud)

java generics type-bounds

1
推荐指数
1
解决办法
31
查看次数

我应该使用什么中间方法在流调用中的某个点执行某些操作?

我在服务中有一个方法可以从数据库中检索课程对象。在将其发送到控制器之前,我需要解压缩字段 byte[] 徽标。Logo 是一张图片,需要在渲染到前端之前从数据库中解压出来。我试图用流来做到这一点,但没有任何成功。map() 方法在 forEach() 方法之后不起作用。

public List<CourseDto> getCoureses() {

    List<Courses> courses = courseRepositoryDao.findAllByIsCourseFreeAndIsCourseActive(true, true);
    List<CourseDto> coursesNameDto = courses
            .stream()
            .forEach(course-> course.setLogo(decompressZLib(course.getLogo()))
            .map(course -> modelMapper.map(CourseMapper.toUserDtoFreeCourses(course), CourseDto.class))
            .collect(Collectors.toList());

    return coursesNameDto;
}
Run Code Online (Sandbox Code Playgroud)

java lambda functional-programming java-stream functional-interface

1
推荐指数
1
解决办法
66
查看次数