我正在寻找优雅的方法来比较任何Wrapper对象和Stream.
Github工作链接:https://github.com/vishwaratna/Unlikely-argument-type-for-equals-Stream-String-/commit/d803f77c923e81fe7531ecb467561ac785d7aca5
最近我在比较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
我的问题以最简单的方式表达:
根据JavaDoc:
Peek()方法主要用于支持调试,您希望在元素流经管道中的某个点时查看元素.
我有一个管10米,并以距离3和7米
从输入头我有两个标记物[又名peek()]用于检查/调试我的元件.
现在从输入端我给出输入1,2,3,4,5.
在x = 4米处,我有一个filter()过滤所有小于等于的元素3.
现在按照Java doc我应该能够看到我在远程3和7米的管道输入发生了什么.
标记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 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+S到X-Experimental features,但没有什么帮助.试过检查
import java.lang.*;,发现@Notnull那里也没有.
这是我的问题:我有一个按时间顺序排列的事件名称列表,例如:
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 8 Streams和Collectors类的新手。
我正在读取一个文件,其内容需要保存在一个文件中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) 如何以可读或逻辑的方式编辑此代码块,以便我不会收到来自声纳的警告?我需要三个结果false,true或者null
public Boolean x() {
if (...) {
return true;
} else if (...) {
return false;
} else {
return null;
}
}
Run Code Online (Sandbox Code Playgroud) 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()));
爪哇 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 中的哪里提到了?
我已经开始学习 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) 不寻找杰克逊解决方案。
进口清单:
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) 我特别了解C#Reference 并且已经分析了为什么我不能在finally块中使用goto语句但是我想知道当我使用方法尝试相同的事情时我最终能够离开finally块但是根据规范我必须不.是不是goto moo和static 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声明通常被认为是一种糟糕的编程习惯,导致程序笨拙.应避免使用它.
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