所以我在Java工作,我想声明一个通用的List.
所以我到目前为止所做的是 List<T> list = new ArrayList<T>();
但现在我想添加一个元素.我怎么做?通用元素是什么样的?
我尝试过像List.add("x")这样的东西,看看我是否可以添加一个字符串,但这不起作用.
(我没有声明a的原因List<String>
是因为我必须将此List传递给另一个仅List<T>
作为参数的函数.
interface A {
public void doSomething();
}
interface B extends A {
public void doSomethingElse();
}
public class AClass implements A, B {
public void doSomething() {}
public void doSomethingElse() {}
}
Run Code Online (Sandbox Code Playgroud)
为什么Java允许这样的声明?通过实现SubInterface(B)可以实现同样的事情,实现两个接口的用途是什么?
我刚刚与我的朋友讨论了使用类名调用静态方法,并尝试了这个代码并期望它在运行时抛出NPE.但事实证明它是dint.我只是想了解执行顺序.
public class One {
public static void method() {
System.out.println("in static one");
}
}
public class Two {
static One o;
public static void main(String[] args) {
o.method(); // expected NPE here, as o is null
}
}
Run Code Online (Sandbox Code Playgroud)
我知道静态方法应该用它们的类名调用,我甚至知道当我们用实例调用静态方法时IDE会给出编译器警告.但我们也可以通过创建一个实例来调用它们,但是,我从来没有在这里创建过一个实例,o
应该得到它的默认值null,因此调用o.method()
应该在运行时抛出一个NPE,但事实并非如此.你们能否详细说明这段代码中的执行顺序.
在我们的应用程序中,当用户单击commandlink时,会生成一个弹出窗口.此单击将传递一个id进行处理.
我的托管bean是视图编写的,我正在创建一个线程来完成一些任务.
在用户点击链接的情况下,生成弹出窗口并且线程已开始执行作业,假设用户关闭弹出窗口并尝试单击此次提供不同ID的链接.我的问题是之前启动的线程没有被破坏.我仍然可以获得最新的id详细信息作为响应,但前一个线程仍然执行作业.
我想知道是否有办法在新请求上终止前一个实例线程.我知道我可以使用sessionscoped来实现这一点,但弹出窗口正在同一个会话中打开.
当我在Java中使用ArrayList时,有一些我不理解的东西.这是我的初始化代码:
ArrayList<Integer> list = new ArrayList <Integer> ();
list.add (0);
list.add (1);
Run Code Online (Sandbox Code Playgroud)
有时我需要通过索引删除一个对象:
list.remove (0) // delete the object in the first box
Run Code Online (Sandbox Code Playgroud)
但有时我想通过其内容删除一个对象:
list.remove (0) // delete the object HAS Which value of 0
Run Code Online (Sandbox Code Playgroud)
这段代码很模糊.为了澄清我想在代码中做什么,我指定这样的类型:
list.remove ((Object) 0) // delete the object which has a value of 0
Run Code Online (Sandbox Code Playgroud)
如果我不AC,唯一知道调用哪些方法的方法是将鼠标指针放在方法上看:java.util.ArrayList.remove boolean(Object object)
Java但它如何产生差异?是否有方法指针?是否有一种不那么模糊的方式来做到这一点?
非常感谢,对不起我的英语.
PS:我应该说我最终使用了SparseIntArray,但我很好奇
注意:ArrayOperation.java使用未经检查或不安全的操作.注意:使用-Xlint重新编译:取消选中以获取详细信息.
public class ArrayOperation{
public static void sort(Comparable[] c){
for (int i=1;i<c.length;i++){
Comparable key = c[i];
int p = i;
while (p>0 && key.compareTo(c[p-1])<0){
c[p]=c[p-1];
p--;
}
c[p] = key;
}
}
Run Code Online (Sandbox Code Playgroud)
}
我有一个字符串a1wwa1xxa1yya1zz
.
我想让每个小组以a1开头,直到下一个a1被排除在外.(在我的例子,我应该是:a1ww
,a1xx
,a1yy
和a1zz
如果我使用:
Matcher m = Pattern.compile("(a1.*?)a1").matcher("a1wwa1xxa1yya1zz");
while(m.find()) {
String myGroup = m.group(1);
}
Run Code Online (Sandbox Code Playgroud)
myGroup
每两组捕获1组.
所以在我的例子中,我只能捕获a1ww
和a1yy
.
任何人都有一个好主意?
怎么会?
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append((String)null);
sb.append(" World!");
Log.d("Test", sb.toString());
Run Code Online (Sandbox Code Playgroud)
产生
06-25 18:24:24.354:D/Test(20740):Hellonull World!
我希望附加一个null
字符串根本不会附加!!
顺便说一句,演员String
是必要的,因为StringBuilder.append()
有很多重载版本.
我在这里简化了我的代码,在我的代码中得到了一个返回字符串的方法
public String getString() { ... }
...
sb.append(getString());
...
Run Code Online (Sandbox Code Playgroud)
getString()
有时回归null
; 现在我必须测试它,如果我想使用StringBuilder
!!!!
此外,让我们在这里澄清一下我的问题:如何StringBuilder.append()
以优雅的方式接受空字符串,而不是将其转换为文字字符串"null".
优雅,我的意思是我不想得到字符串,测试它是否null
只是然后追加它.我正在寻找一个优雅的oneliner.
试过如下
String d=new String("12.00");
Double dble =new Double(d.valueOf(d));
System.out.println(dble);
Run Code Online (Sandbox Code Playgroud)
输出:12.0
但我希望得到12.00精度
请不要在字符串类中使用format()方法让我知道正确的方法
我有一个单词,我需要用星号替换某个字符,但我需要从这个单词中获取所有替换的变体.例如.我想在星号中用星号替换字符'e':
String word = telephone;
Run Code Online (Sandbox Code Playgroud)
但要获得此列表:
List of words = [t*lephone, tel*phone, telephon*, t*l*phone, t*lephon*, tel*phon*, t*l*phon*];
Run Code Online (Sandbox Code Playgroud)
在Java中有快速的方法吗?