小编dus*_*kin的帖子

Assertj:如何按对象内容比较2个对象列表?

给出以下(快速且缺失的)代码:

class Pair{
int x;
int y;
}

List l1 = Arrays.asList(new Match(1,2), new Match(1,3), new Match(2,3));
List l2 = Arrays.asList(new Match(1,2), new Match(1,3), new Match(2,3));
Run Code Online (Sandbox Code Playgroud)

如何比较列表的内容?到目前为止我使用的所有内容都检查对象本身是否相等而不是对象值:

assertThat(l1).isEqualTo(l2);
assertThat(l1).containsAll(l2);
assertThat(l1).containsExactly(values);
assertThat(l1).containsExactlyElementsOf(iterable);
Run Code Online (Sandbox Code Playgroud)

我必须为 Match 类实现 equals() 方法吗?

这可能是正确的方法吗?

for (int i = 0; i < l1.size(); i++){
    assertThat(l1.get(i)).usingRecursiveComparison().isEqualTol2.get(i));
}
Run Code Online (Sandbox Code Playgroud)

java assertj

12
推荐指数
2
解决办法
2万
查看次数

Java 8:如何从包含为映射值的列表中获取值?

我有以下情况:我有一个LinkedHashMap <>,其中键类型是String,并且值类型各不相同:double,String,LinkedHashMap等。我试图从其中一个LinkedHashMaps值的键中提取值。是主地图的值。例如,我想从下面的代码中得到结果1(显然,这是一团糟,因为它甚至没有编译):

Map<String, Object> input = new HashMap<>();     
input.put("a", "1234");
input.put("b", "2345");
input.put("c", "3456");
input.put("d", new HashMap<String, String>());

HashMap<String, Object> input2 = (HashMap<String, Object>)(input.get("d"));
input2.put("d1", 1);
input2.put("d2", 2);

Optional<Integer> result = input.entrySet().stream()
            .filter(e -> e.getKey().equals("d"))
            .map(Map.Entry::getValue)
            .filter(e -> e.getKey().equals("d1"))
            .findFirst();
Run Code Online (Sandbox Code Playgroud)

我哪里出错了,当然,获得结果的最佳方法是什么?

谢谢。

java java-8

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

Terraform .id 说明

我是 Terraform 的新手,对id资源返回的属性感到困惑。

鉴于:

data "azurerm_subnet" "aas_mng_subnet" {
  name                 = "${var.prefix}-${var.env_type}-subnet-${var.site_octet}.50.x"
  virtual_network_name = "${data.azurerm_virtual_network.main.name}"
  resource_group_name  = "${var.prefix}-${var.env_type}"
}
Run Code Online (Sandbox Code Playgroud)

subnet_id = "${data.azurerm_subnet.aas_mng_subnet.id}"
Run Code Online (Sandbox Code Playgroud)

价值是多少subnet_id?我的意思是一般情况 - 不是特定于这个例子。.id该属性出现在每个地方的值是多少?

Terraform 文档试图解释这一点,但我不确定我是否仍然理解它:

数据源的属性

语法为 data.TYPE.NAME.ATTRIBUTE。例如。${data.aws_ami.ubuntu.id}将从名为 的数据源插入id 属性。如果数据源设置了计数属性,则可以使用从零开始的索引访问各个属性,例如 。您还可以使用 splat 语法来获取所有属性的列表: 。aws_amiubuntu${data.aws_subnet.example.0.cidr_block}${data.aws_subnet.example.*.cidr_block}

如果有人能用其他词语和/或例子向我解释,我将不胜感激。

terraform

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

Win32,MFC:结束线程

我有一个DLL,它有一个名为CWork的基于CWinThread的类.我使用AfxBeginThread创建它.

在这个类中,我定义了一个将infinet循环并执行某个任务的过程.此过程将单独用作线程.我也使用AfxBeginThread创建它.

现在,当我的DLL退出时,我想结束线程.这是因为我退出时遇到了崩溃,我很担心这就是原因.

另外,还有

伪代码示例:

Cmain类

Cmain::Cmain(){
    pMyThread = AfxBeginThread(CWork - a CWinThread based Class);
}
Run Code Online (Sandbox Code Playgroud)
 UINT HandleNextVTSConnectionCommandProc(LPVOID pParam);

class CWork

 CWork:CWork(){
   AfxBeginThread(HandleNextVTSConnectionCommandProc, this);
 }


UINT HandleNextVTSConnectionCommandProc(LPVOID pParam){

 while(true){

     dosomething();
     sleep(2000);

 }

}
Run Code Online (Sandbox Code Playgroud)

我的问题是,结束这两个线程的正确方法是什么?

谢谢!

c++ winapi mfc multithreading

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

JAVA - 如果其中的一个函数失败,如何优雅地继续while循环?

我有一个由while循环组成的函数.在while循环中,我调用了许多私有方法.如果任何方法失败(返回false,但也抛出私有设计的异常),我想继续下一次迭代.

例:

 void func (){

    while (true){

        func1();
        func2();
        func3();

    }
 }
Run Code Online (Sandbox Code Playgroud)

正如我所说,每个func也会在出错时抛出myException对象.

谢谢!

java exception-handling exception while-loop

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

获取"java.nio.charset.UnmappableCharacterException:输入长度= 1"

我在collect()方法调用(或toList()调用)上获得UnmappableCharacterException:

    private static void handleTransaction(Path a_filePath, String a_sTrasactionName, String a_sTransactionFilePath) {

    // read file into stream, try-with-resources
    try (Stream<String> stream = Files.lines(Paths.get(a_filePath.toString()), Charset.defaultCharset())) {

        List<String> list =
            stream.filter(line -> (line.indexOf(a_sTrasactionName) > 0))
            .collect(Collectors.toList());

        list.forEach(line -> {

            System.out.println(line);

            try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(_FILES_PATH + a_sTransactionFilePath),Charset.defaultCharset(), StandardOpenOption.APPEND)) {
                writer.write(line + "\n");
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    } catch (IOException e1) {

        e1.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

它对我有用,但从那时起从未如此.

我读的文件是在solaris上创建的csv文件.我在Windows 2012服务器上运行jar

你能告诉我吗?

谢谢.

java java-8

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

成员数组在哪里?

给出以下代码:

class MyClass
{
public:
    char array[10];
};

int main()
{
    MyClass *p = new MyClass;
...
}
Run Code Online (Sandbox Code Playgroud)

据我所知 - new在堆上分配对象.但是,数组也在堆栈上分配(没有新的运算符).

那么,是在堆上分配数组(因为对象在堆中)还是在程序堆栈上?

c++

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

Java 递归:如何在一行中写入由逗号分隔的 1..n 时避免最后一个逗号。查看里面的完整任务描述

我有以下任务:

编写一个递归void 方法,该方法接受单个(正)int 参数n 并写入整数 1, 2, 。. . , n 到屏幕。

到目前为止我尝试过的是:

public static void write1ToNInOneLine(int n){
    if (n == 0) {
        return;
    } 
    else // n is two or more digits long:
    {
        write1ToNInOneLine(n - 1);
        System.out.print(n + ",");
    }
}
Run Code Online (Sandbox Code Playgroud)

但显然我在输出中有最后一个多余的逗号。

有没有办法避免它?

java recursion

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

如何验证String是否包含List中的任何字符串?

我发现只有关于匹配的给定字符串是列表项的子字符串的情况的问题,但我需要的是相反的:

我有一个字符串列表,可能是给定String的确切字符串或子字符串.

使用:

boolean bValid = listOfStrings.contains(sText);
Run Code Online (Sandbox Code Playgroud)

如果在列表中找不到sText,则会给我错误.

例如:

假设我有以下字符串列表:

List<String> listOfStrings = Arrays.asList("ABC","DEF","GHI");
Run Code Online (Sandbox Code Playgroud)

我需要找到其中一个项是否等于或是否为子串,例如字符串:ABC1 ".

我会的false.但我想谈谈true这个案子.

java arrays collections list

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

Python警告:预期的Collection.Iterable,改为'int'

我是 Python 新手 :)

鉴于此代码:

    some_list_len = len(some_list)
    for i in some_list_len :
        print some_list[i]
Run Code Online (Sandbox Code Playgroud)

为什么我会收到主题警告?我怎样才能克服它?

此致!

python

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