小编Vis*_*tna的帖子

优雅的方法克服equals()的不太可能的参数类型:Stream <String>似乎与String无关

我正在寻找优雅的方法来比较任何Wrapper对象和Stream.

Github工作链接:https://github.com/vishwaratna/Unlikely-argument-type-for-equals-Stream-String-/commit/d803f77c923e81fe7531ecb467561ac785d7aca5

参考问题:在java-8中过滤从map到list属性的键

最近我在比较List一个关键的成员时面对它Map.我知道有其他方法可以比较而不做我正在做的事情,但我正在寻找一般铸造,如果它可用.

List<student> stulist = Arrays.asList(new student("1", "vishwa",null),
                                              new student("3", "Ravi",null),
                                              new student("2", "Ram",null));
Run Code Online (Sandbox Code Playgroud)
        Map<String,String> map = new HashMap() {{
             put("1","20");
             put("2","30");
           }};
Run Code Online (Sandbox Code Playgroud)
System.out.println( stulist.stream()
                    .filter(s->s.getId()
                    .equals(map.entrySet()
                    .stream() 
                    .map(Map.Entry::getKey)))
                    .count());
Run Code Online (Sandbox Code Playgroud)

我的代码编译正确,但输出为"0",而我期望输出为2.

我确定这是由于类型不匹配,但为什么编译器没有 抛出错误?

警告我得到: Unlikely argument type for equals(): Stream<String> seems to be unrelated to String

java java-8 java-stream

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

Peek()真正看到元素流过管道中的某个点

我的问题以最简单的方式表达:

根据JavaDoc:

Peek()方法主要用于支持调试,您希望在元素流经管道中的某个点时查看元素.

我有一个管10米,并以距离37米 从输入头我有两个标记物[又名peek()]用于检查/调试我的元件.

现在从输入端我给出输入1,2,3,4,5.

在x = 4米处,我有一个filter()过滤所有小于等于的元素3.

现在按照Java doc我应该能够看到我在远程37米的管道输入发生了什么.

标记1距离3(.peek())处的输出应该不1,2,3,4,5应该是?? 标记2距离7处的输出 应该是4,5明显的.

但这实际上并没有发生,输出正在第一市场(.peek())正好1,2,3在第二市场即将到来4,5.


我为测试我的理论而执行的代码:

final List<Integer> IntList=
    Stream.of(1, 2, 3, 4, 5)
    .peek(it -> System.out.println("Before Filtering "+it)) // should print 1,2,3,4,5
    .filter(it -> …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

3
推荐指数
2
解决办法
250
查看次数

JEP 323 java-11中的@Notnull在哪里

我昨天开始使用Java 11,我下载了JDK,制作了PC(Windows)的环境变量,创建了一个新项目,并设置了JDK和JRE来指向Java 11.

我甚至echo %JAVA_HOME%在cmd中再次检查了我的Env变量,这很好.

每件事似乎都没问题@Notnull var,但我的编译器没有认识到,有人可以帮忙!

我正在尝试执行的基本程序:

                 list.stream()
                .map((@Notnull var s) -> s.toLowerCase())
                .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

错误是:

Error:(13, 24) java: cannot find symbol
symbol:   class Notnull
location: class Main
Run Code Online (Sandbox Code Playgroud)

甚至改变了语言水平的项目结构通过 Ctrl+Shift+Alt+SX-Experimental features ,但没有什么帮助.

试过检查import java.lang.*;,发现@Notnull那里也没有.

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

如何按列表描述的顺序有效处理HashMap?

这是我的问题:我有一个按时间顺序排列的事件名称列表,例如:

ArrayList<String> eventsOrder = new ArrayList<>(Arrays.asList("event1", "event2", "event3", "event4", "event5"));
Run Code Online (Sandbox Code Playgroud)

我有关于事件的数据的 HashMap,其中键是事件名称,例如:

HashMap<String, String> eventsData = new HashMap<>();
    eventsData.put("event2", "data2");
    eventsData.put("event1", "data1");
    eventsData.put("event3", "data3");
Run Code Online (Sandbox Code Playgroud)

我还有一个方法可以将来自 2 个事件的数据合并为 1 个:

public String merge(String previousEventsData, String nextEventsData);
Run Code Online (Sandbox Code Playgroud)

我需要按时间顺序将所有事件的数据合并到一个对象。所以在这种情况下,它会是这样的:

merge(merge("data1", "data2"),"data3");
Run Code Online (Sandbox Code Playgroud)

这就是我现在解决它的方法:

首先,这个 HashMap 可能包含也可能不包含所有事件的数据,所以我过滤了可用事件的名称:

ArrayList<String> eventsToProcess = eventsOrder.stream()
                .filter(eventName -> eventsData.containsKey(eventName))
                .collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)

然后我使用这个丑陋的算法按时间顺序合并事件的数据:

    String finalData = "";

    int eventsCount = namesToProcess.size();

    finalData = eventsData.get(namesToProcess.get(0));
    if(eventsCount > 1) {
        for (int i = 1; i < eventsCount; i++){
            finalData …
Run Code Online (Sandbox Code Playgroud)

java sorting algorithm java-stream

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

如何在java 8中使用收集器和流自动递增哈希图的键

我是 Java 8 StreamsCollectors类的新手。

我正在读取一个文件,其内容需要保存在一个文件中LinkedHashMap<Integer, String>,其中它<keys>是文件的行号,它<values>是每行的内容。

在这里,我想使用这个Stream概念,但我无法使用Collectors.toMap自动递增<keys>,它需要保存在LinnkedHashMap对象中。相反,我得到了例外。

以下是我正在尝试的代码:

List<String> list = new ArrayList<>();
Integer count = 0;

try (BufferedReader br = Files.newBufferedReader( Paths.get( fileName ) )) {
    // br returns as stream and convert it into a List
    list = br.lines().collect( Collectors.toList() );
}
catch ( IOException e ) {
    e.printStackTrace();
}

list.forEach( System.out::println );

Map<Integer, String> fileNumWithContentMapper = list.stream()
        .collect( Collectors.toMap( n->n+1,s1->s1));
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream collectors

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

Java Sonar Null 警告“返回 null 但需要布尔值”

如何以可读或逻辑的方式编辑此代码块,以便我不会收到来自声纳的警告?我需要三个结果falsetrue或者null

 public Boolean x() {
    if (...) {
        return true;
    } else if (...) {
        return false;
    } else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

java boolean sonarqube

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

为什么 java.lang.OutOfMemoryError: 在尝试打印代码“stream3.collect(Collectors.toList());”时抛出?

java.lang.OutOfMemoryError: java heap space 执行以下代码时抛出错误。

Stream<String> stream3 = Stream.generate(() -> {return "afdajfkljflks";});

System.out.println(stream3.collect(Collectors.toList()));
Run Code Online (Sandbox Code Playgroud)

为什么具体是java堆空间错误以及这段代码背后的场景System.out.println(stream3.collect(Collectors.toList()));

java java-8 java-stream

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

在 Java 8 和 Java 11 中使用 --version 和 -version 检查版本

爪哇 11

JAVA_HOME : C:\Program Files\Java\jdk-11.0.4
Run Code Online (Sandbox Code Playgroud)

我能够使用以下命令在 cmd 中找到 Java 版本:

java --version  //successfully executed

java -version  //successfully executed
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

爪哇 8

 JAVA_HOME : C:\Program Files (x86)\Java\jdk1.8.0_231
Run Code Online (Sandbox Code Playgroud)

我能够使用以下命令在 cmd 中找到 Java 版本:

java -version  //successfully executed
Run Code Online (Sandbox Code Playgroud)

虽然我无法通过--version命令找到 java 版本

java --version  //not successfully executed
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

为什么我在执行时收到无法创建 Java 虚拟机的错误--version,或者jdk 8 中没有此命令选项?如果它是在 jdk 11 中添加的,那么它在 doc 中的哪里提到了?

java java-8 java-11

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

为什么这个布尔值没有在 Go 中注册?

我已经开始学习 Go,但我遇到了一个奇怪的错误,还有一个更奇怪的修复程序,用于解决HackerRack 问题

func countingValleys(steps int32, path string) int32 {
    // Write your code here
    var level int32 = 0
    var valleys int32 = 0
    // The below declaration was throwing the initial error
    insideValley := false

    for _, char := range path {
        fmt.Println(insideValley)
        if string(char) == "U" {
            if level == -1 {
            insideValley = false
                valleys += 1
            }
            level += 1
        } else if string(char) == "D"{
           if level == 0 {
            insideValley = …
Run Code Online (Sandbox Code Playgroud)

go

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

带JSON数组的map()

不寻找杰克逊解决方案。

进口清单:

import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.util.List;
import java.util.stream.Collectors;
Run Code Online (Sandbox Code Playgroud)

JSON数据:

{
    "Name": "ABC.com",
    "Developer": "Vishwa ratna",
    "Project List": [
        "Compnay: National",
        "Compnay: Enterprise",
        "Compnay: Alamo"
    ]
}
Run Code Online (Sandbox Code Playgroud)

我的程序:

 @SuppressWarnings("unchecked")
    public  static  void main(String[] args)
    {
        File text = new File("R:/TestJSON.txt");
        JSONParser parser = new JSONParser();
        try {
            Object obj = parser.parse(new FileReader("R:\\Desktop\\TestJSON.txt"));
            JSONObject jsonObject = (JSONObject) obj;
            List<String> list = new ArrayList<>();
            String name = (String) jsonObject.get("Name");
            System.out.println(name);
            String author = …
Run Code Online (Sandbox Code Playgroud)

java json dictionary java-8 java-stream

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

在c#中的finally块中转到vs方法

我特别了解C#Reference 并且已经分析了为什么我不能在finally块中使用goto语句但是我想知道当我使用方法尝试相同的事情时我最终能够离开finally块但是根据规范我必须不.是不是goto moostatic void moo()做同样的行为,即把我带出最后一块?那么为什么在第一种情况下它不起作用但在第二种情况下工作顺利?

break,continue或goto语句的编译时错误是将控制转移出finally块.当finally块中出现break,continue或goto语句时,语句的目标必须位于同一finally块中,否则会发生编译时错误.

在finally块中发生return语句是编译时错误.

第一个案例与Goto声明.

static void Main(string[] args)
            {
                try{}
                catch (Exception ex){}
                finally
                {
                    goto moo;
                }
            moo:
                Console.Write("Hello");
            }
Run Code Online (Sandbox Code Playgroud)

方法的第二个案例:它奏效了!

 static void Main(string[] args)
        {

            try{}
            catch{}
            finally
            {
                moo();
            }
        }
        static void moo()
        {
            int x=2, y=3, a=4, b=7;
            if (x == y)
                return;
            else
                a = b;
        }
Run Code Online (Sandbox Code Playgroud)

GOTO声明通常被认为是一种糟糕的编程习惯,导致程序笨拙.应避免使用它.

c# goto

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

标签 统计

java ×8

java-8 ×6

java-stream ×6

algorithm ×1

boolean ×1

c# ×1

collectors ×1

dictionary ×1

go ×1

goto ×1

java-11 ×1

json ×1

sonarqube ×1

sorting ×1