我想写一个Java函数,它将作为输入int[],float[]或者double[].算法完全相同(某种标量积).如何编写能够处理所有类型数值数组的单个函数?
据我所知,StringBuilder通过在concats期间不在字符串池中创建临时字符串实例来帮助减少内存使用量.但是,如果我这样做会发生什么:
StringBuilder sb = new StringBuilder("bu");
sb.append("b"+"u");
Run Code Online (Sandbox Code Playgroud)
它编译成了吗?
sb.append("b");
sb.append("u");
Run Code Online (Sandbox Code Playgroud)
?或者它取决于优化标志?或者,如果使用stringbuilders,我会失去整个好处?或者这个排队没有意义?:)
我有一个字符串列表,我浏览它并计算"x"字符串的数量如下,但计数不打印我预期的值:
ArrayList<Integer> list = new ArrayList<Integer>();
List<String> strings = table.getValue(); //this gives ["y","z","d","x","x","d"]
int count = 0;
for (int i = 0; i < strings.size(); i++) {
if ((strings.get(i) == "x")) {
count++;
list.add(count);
}
}
System.out.println(list);
Run Code Online (Sandbox Code Playgroud)
这给[]它应该是2因为我有2次出现"x"
这似乎是一个简单的问题,但我现在已经尝试了几个小时(无需实现hashCode比较)来使containsKey工作.为简化起见,我将发布一个简单的代码示例,我遇到了以下问题:
public class myPair {
private int a;
private int b;
myPair(int x, int y) {
a=x;
b=y;
}
public boolean equals(Object pair) {
System.out.println("Ola");
return true;
}
int first() { return a; }
int second() { return b; }
public String toString() {
return "X: "+this.a + " Y:"+this.b;
}
}
public class Main {
public static void main(String args[]){
Map<myPair,String> myMap = new LinkedHashMap<myPair, String>();
myMap.put(new myPair(2, 2), "encontrou me");
if(myMap.containsKey(new myPair(2, 2))){
System.out.println(myMap.get(new myPair(2, 2)));
}
System.out.println(myMap.get(new …Run Code Online (Sandbox Code Playgroud) 我注意到我可以扩展一个类,同时将参数传递给扩展类:
scala> class SomeClass(val str: String)
defined class SomeClass
scala> class SubclassOne extends SomeClass("one")
defined class SubclassOne
scala> class SubclassTwo extends SomeClass("two")
defined class SubclassTwo
scala> val obj : SomeClass = new SubclassOne
obj: SomeClass = SubclassOne@2dca4eb4
scala> obj.str
res0: String = one
Run Code Online (Sandbox Code Playgroud)
我正在使用案例类,其中ClassName(args)实际上创建了一个对象,所以对我来说,它看起来像是在扩展一个对象,但我不确定这里.
它是否意味着我正在扩展类,并自动将参数传递给超级构造函数?
如果我有这样的方法
private void setStringList(List<String> aList) { ... }
Run Code Online (Sandbox Code Playgroud)
那么这显然是可能的
private void testOnly() {
List<String> myDummyList = new ArrayList<String>();
myDummyList.add("someValue");
setStringList(myDummyList);
}
Run Code Online (Sandbox Code Playgroud)
但有没有办法让它不那么冗长
private void testOnly2() {
setStringList(new ArrayList<String>().add("someValue"));
}
Run Code Online (Sandbox Code Playgroud)
我知道上面是编译错误,但只是为了展示我想要实现的目的,只是为了减少冗长.
我知道在动态绑定的情况下,只能调用当前类中存在的那些方法.如果子覆盖父方法,则执行子方法,否则将执行parent方法...
但是在接口的情况下发生了什么,我不知道......这是我的意思的一个例子:
interface TestInterface {
public void show();
}
class Test implements TestInterface {
public void show() {
System.out.println("Hello in show");
}
public String toString() {
System.out.println("Hello in To String");
return "";
}
public static void main(String[] args) {
TestInterface obj = new Test();
obj.show();
obj.toString(); // why it run vilate dynamic binding rule..
}
}
Run Code Online (Sandbox Code Playgroud) 背景:我想要在表格中显示一些数据.表中的每列都有一个标题.其中一些标题依次具有公共标题.换句话说,我有一个标题树,我想在表格单元格中显示.
问题:如何通过合并单元格以表格的形式很好地布置树(参见Excel中的合并单元格或/ 在HTML表格中)?rowspancolspan
一些要求:
给出如下的树:
+ Header 1
|---+ Header 2
| |---- Header 4
| '---+ Header 5
| |---- Header 8
| '---- Header 9
'---+ Header 3
|---- Header 6
'---- Header 7
Run Code Online (Sandbox Code Playgroud)
结果表应始终为矩形,即这是不可接受的:
.-------------------------------------------.
| Header 1 |
+--------------------------+----------------+
| Header 2 | Header 3 |
+----------+---------------+--------+-------+
| Header 4 | Header 5 | Hdr 6 | Hdr 7 |
'----------+-------+-------+--------+-------'
| Hdr 8 …Run Code Online (Sandbox Code Playgroud)我遇到以下情况:
我的Analyzer类型大致如下
interface Analyzer {
int computeValue();
String performAnalysis();
}
Run Code Online (Sandbox Code Playgroud)
通过类似的东西实现
class AnalyzerImpl implements Analyzer {
@Override
public int computeValue() {
return 5;
}
@Override
public String performAnalysis() {
return "Result: " + computeValue();
}
}
Run Code Online (Sandbox Code Playgroud)
(在我的实际代码中,performAnalysis使用几种不同computeValue复杂性的方法执行许多计算.)
现在我需要Analyzer在运行时有选择地调整对象的行为(或者使用调整行为创建一个包装器).
我添加了调整方法:
public Analyzer tweakAnalyzer(Analyzer untweakedAnalyzer) { ... }
Run Code Online (Sandbox Code Playgroud)
并尝试使用装饰器模式解决它:
class AnalyzerDecorator implements Analyzer {
Analyzer delegate;
public AnalyzerDecorator(Analyzer delegate) {
this.delegate = delegate;
}
@Override
public int computeValue() {
return …Run Code Online (Sandbox Code Playgroud) 我正在编写一个 Makefile 来编译一个很长的项目。基本上,我已经定义了我需要的所有对象。当我需要生成依赖项时,问题就出现了。我正在做这样的事情:
a.o: $( $(CXX) -MM $(INCLUDE) A/a.cpp | sed 's/a.o: //')
$(CXX) $(CXXFLAGS) $(INCLUDES) A/a.cpp
b.o: $( $(CXX) -MM $(INCLUDE) A/b.cpp | sed 's/b.o: //')
$(CXX) $(CXXFLAGS) $(INCLUDES) A/b.cpp
libab.a: a.o b.o
$(LXX) $(LXXFLAGS) libab.a a.o b.o
Run Code Online (Sandbox Code Playgroud)
的输出$(CXX) -MM $(INCLUDE) A/a.cpp | sed 's/a.o: //'列出了 a.cpp 需要编译的所有依赖项,因此当我声明对象但它不起作用时,我尝试将此命令的输出像依赖项一样放置。
您知道如何做吗?
谢谢。
java ×8
arraylist ×2
arrays ×1
decorator ×1
dependencies ×1
gcc ×1
html ×1
html-table ×1
inheritance ×1
makefile ×1
map ×1
oop ×1
scala ×1
spreadsheet ×1
string ×1
tree ×1