以下代码让我感到困惑,任何人都可以解释为什么这两个测试表现不同?为什么第一个测试中的String比较返回false而第二个测试中的比较返回true?
public class Student {
/**
* Why the string "java" doesn't added to the 'String Pool' by intern() method ?
*/
@Test
public void test1() {
String str1 = new String("ja") + new String("va");
str1.intern();
String str2 = "java";
// Result:false
System.out.println("Result:" + (str1 == str2));
}
/**
* Any other strings will be added to 'String Pool' as expected after intern() is invoked.
*/
@Test
public void test2() {
String str1 = new String("ja1") …Run Code Online (Sandbox Code Playgroud) 我有一个数组,例如我想从数组的所有元素中减去7.除了以下逻辑,我该怎么做呢.
for (int i = 0; i < array.length; i++)
{
array[i]-=7;
}
Run Code Online (Sandbox Code Playgroud)
任何相关的流都会有所帮助.
编辑 - 它不应该是一个数组.它也可以是ArrayList.
有人可以解释为什么java人会覆盖hascodein 的目的Optional
我想从列表中删除一个项目,如果它不是集合中的最后一个.
例如:
List<String> items = ....
Iterator<String> it = items.iterator();
while (it.hasNext() && items.size() > 1) {
String item = it.next();
if (condition(item)) {
it.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以通过在Java 8中使用流以更优雅的方式执行相同的操作?
我有使用Streamobject作为参数的方法,在该方法中我必须根据Stream类型执行一些操作.但是instanceof不起作用并且给我编译错误
public <T>boolean objectIsNullOREmpty(Stream<T> str) {
if(str instanceof Stream<String>) {
//do some actions
}
if(Str instanceof Stream<SomeClass>) {
//do some actions
}
}
Run Code Online (Sandbox Code Playgroud)
编译错误
无法对参数化类型Stream执行instanceof检查.请使用表单Stream,因为在运行时将删除其他泛型类型信息
给出一个对象列表
// ["A", ["B", null, "C"], "D", ["E"], [], null, "F"];
List<Object> objects = Arrays.asList("A", Arrays.asList("B", null, "C"), "D", Arrays.asList("E"), Arrays.asList(), null, "F");
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以将非空值组合到一个列表中["A", "B", "C", "D", "E", "F"]?
有些人坚持认为帖子必须显示尝试的内容
objects.stream().map(o -> {
if (o instanceof List) {
return ((List) o).stream();
} else return objects.stream();
}).filter(Objects::nonNull).collect(Collectors.toList()));
Run Code Online (Sandbox Code Playgroud)
显然上面没有用.
group.getTeamMemberIds().stream().filter(id -> userMap.containsKey(id)).
map(id -> groupDTO.getTeamMembers().add(userMap.get(id)));
Run Code Online (Sandbox Code Playgroud)
Sonar检测到这一点,因为中间流方法不应该被闲置主要bug
TL; TD在Java 8中,有一种接口默认方法来访问实例变量的方法吗?
例如:
public interface Foo{
default getBazModified(){
return baz * 2;
}
}
public class Bar implements Foo {
int baz;
...
}
Run Code Online (Sandbox Code Playgroud)
我知道这听起来像travisty但是有没有办法在Java 8中做类似的事情?
或者唯一的方法是有一个实现Foo的抽象类,它将声明实例变量baz并具有getBazModified()的默认实现?
所以我目前正在Oracle JDK 8中构建我的所有应用程序.Oracle授权策略更新是否会影响JDK 8的使用,或者仅用于JDK 11 LTS.假设如果我想在不久的将来迁移到JDK 11,我可以在GPL下选择OpenJDK进行生产吗?在GCL下BCL和OpenJDK下的Oracle JDK源代码是否有任何变化?我可以互换使用吗?
我见过各种线程,其中大多数都在谈论默认值,例如Primitive用0初始化,而Wrappers用null初始化。我的问题是具体的,仅举例而不是概念。
我的课:
public class Subject {
int subCode;
int marks;
long CGPA;
public Subject(int subCode, int marks, long CGPA) {
this.subCode = subCode;
this.marks = marks;
this.CGPA = CGPA;
}
}
Run Code Online (Sandbox Code Playgroud)
现在在我的主班上去我的地图:
Map<Integer,List<Subject>> map1 = new HashMap<>();
map1.put(Integer.valueOf(1),new Subject(001,70,29l));
Run Code Online (Sandbox Code Playgroud)
我在中遇到错误29l,我尝试过各种形式,例如Long.Valueof(29),但它们不起作用。
谁能告诉我一个概念,即在一个类的字段中何时存在原始类型,然后如何使用构造函数创建该类的实例。
注意:我完全知道我应该在这里使用Wrapper类,但是现在我想尝试使用Primer,这只是为了我的学习。
谢谢。
java ×10
java-8 ×10
java-stream ×4
api-design ×1
arraylist ×1
hashcode ×1
java-11 ×1
list ×1
optional ×1
sonarqube ×1