小编CKi*_*ing的帖子

为什么最后一个对象在ArrayList中被多次复制?

我正在尝试将名为City类的对象添加到.这是该类的代码ArrayList

public class City {

    public static int x;
    public static int y;

    City(){
        Random rand = new Random();
        this.x = rand.nextInt(100)+1;
        this.y = rand.nextInt(100)+1;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的Main类的代码

    public static int N = 10;
    public static ArrayList<City> cities = new ArrayList<City>();

    public static void main(String[] args) {        

        for (int i=1; i<N; i++){            
            cities.add(new City());
        }       

        for (City c : cities)
            System.out.print("("+c.x+", "+c.y+")");
    }

}
Run Code Online (Sandbox Code Playgroud)

结果println总是相同的,似乎数组列表只存储其所有元素中添加的最后一个对象.

例如,我运行程序时得到的结果是:

(52, 93)(52, 93)(52, …
Run Code Online (Sandbox Code Playgroud)

java arraylist

4
推荐指数
2
解决办法
174
查看次数

为什么要使用null!=任何东西而不是任何东西!= null?

我见过我的老年人的各种代码,他们在很多地方使用过它.它有什么影响?为什么他们不能包括anything != null.对于下面的事情也是如此

"true".equals(x).

为什么会这样?

java null equals

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

如何在Quartz中重新安排作业执行间隔?

我对Quartz有点新意.有没有办法更新已提交的Quartz作业的作业执行间隔?此间隔是否立即更新?重新安排后,你是否必须再次开始这项工作?

我找到了以下链接,但我不知道哪些库是代码,因为我的石英罐不包含链接中使用的一些类.此外,triggerKey方法来自哪里?这是某种静态导入吗?

http://quartz-scheduler.org/documentation/quartz-2.x/cookbook/UpdateTrigger

我希望在我的一个JUnit测试用例中将作业执行间隔更新为一个非常大的数字,因为我不希望该作业干扰被测试类的状态.测试用例完成后,我想将作业执行间隔重置为将在生产中使用的实际值

java quartz-scheduler

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

如何在multi-catch语句中使用final?

在Java中的单个catch块中捕获多种类型的异常时,如何为异常提供final修饰符

java exception

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

根据对象类型调用方法

我有两个辅助方法:

public String load(URL url) {...}
public String load(File file) {...}
Run Code Online (Sandbox Code Playgroud)

我想有一个方法,根据它接收的对象类型调用适当的帮助器方法:

public void operate(Object object) {...}
Run Code Online (Sandbox Code Playgroud)

我知道有一种令人费解的方式,它是:

public void operate(Object object) {
    String data = null;
    if (object.getClass().equals(File.class)) {
        data = load((File) object);
    }
    if (object.getClass().equals(URL.class)) {
        data = load((URL) object);
    }
    // operate on the data....
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎并不优雅,如果有更好的方式,我很好奇.

java generics design-patterns

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

Spring注入中的循环依赖 - 这是一个糟糕的设计吗?

我遇到以下问题:

我正在尝试创建bean如下:

@Bean
public abc createABC() {
    return new ABC(--, def(),--);
}
Run Code Online (Sandbox Code Playgroud)

`

@Bean
public DEF def() {
    return new DEF(--, createABC(),--
}
Run Code Online (Sandbox Code Playgroud)

有任何建议可以解决这个问题,而不必考虑基于setter的注入.这是不良设计的指示吗?在我的情况下,这种依赖是必须的.请提供您的观点

java oop spring design-patterns spring-ioc

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

获取Set的所有被拒绝的添加内容

我对hashsets并不是很好,我想知道我是否能够使用.addAll方法检索hashets删除的重复项.所以在我的代码中,它要求用户输入最多20的值,如果它是-1,则中断.然后删除重复项并显示完成的列表.但现在我想显示已删除重复项的列表列表.例如:2 = 3个重复5 = 5个重复.这是我的代码:

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;

public class Question {
    public static void main(String[] args) {
        ArrayList<Integer> entries = new ArrayList<Integer>();
        Scanner input = new Scanner(System.in);
        int counter = 0;
        int sentinel = -1;
        while (entries.size() <= 20) {

            System.out.println("Please enter some numbers into the entries list");
            entries.add(input.nextInt());
            if (entries.get(counter) == sentinel) {
                entries.remove(counter);
                break;
            }
            System.out.println("You've added: " + entries.get(counter) + ". So far your list is as shows: " + entries); …
Run Code Online (Sandbox Code Playgroud)

java list arraylist duplicates hashset

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

如何使用apache-commons-dbutils将数据库列名称映射到Java类字段

我想使用Apache DBUtils库从数据库填充POJO(State.java)。但是,由于Bean属性的名称与DB列名称不完全匹配,因此某些属性未填写。

现在,我通过谷歌搜索对此进行了一些研究,发现可以通过以下方法实现:

  1. 编写SQL查询时使用列别名(我不喜欢这样做,因为在一些较大的表中有多个联接,因此需要大量别名)
  2. 使用BeanProcessor(在任何地方都找不到很好的示例)

谁能提供一个很好的例子说明如何使用BeanProcessor将列名映射到属性?调整示例为我提供的效果会更好。

数据库表

CREATE TABLE public.states (
  state_id INTEGER DEFAULT nextval('states_seq'::regclass) NOT NULL,
  state_cd VARCHAR(2) NOT NULL,
  name VARCHAR(100) NOT NULL,
  tax_pct NUMERIC(10,2) DEFAULT 0.00 NOT NULL,
  active CHAR(1) DEFAULT 'Y'::bpchar NOT NULL,
) 
Run Code Online (Sandbox Code Playgroud)

State.java

  public class State implements Serializable {

    private int stateId;
    private String stateCode;
    private String name;
    private BigDecimal taxPct = new BigDecimal(0);
    private Date expiryDate;
    private String createdBy;
    private Date createdOn;
    private String active;

    //getters and setters here …
Run Code Online (Sandbox Code Playgroud)

java jdbc apache-commons-dbutils

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

为什么序列化在没有实现 Serializable 的情况下工作

序列化类时是否必须实现 Serializable 类。我尝试将对象数据放入带有和不带有可序列化实现的文件中,发现绝对没有区别。

片段-1

import java.io.*;
import java.net.*;
public class SerializableTest {

    int a= 10;
    String test="Serialize test";

    public static void main(String [] args){

        SerializableTest test =new SerializableTest();
        test.save();
    }

    public void save(){

        try{

            FileOutputStream fs = new FileOutputStream("save.res");
            ObjectOutputStream os = new ObjectOutputStream(fs);
            os.writeObject(test);
            os.close();

        }
        catch (Exception ex ){
            System.out.println("Error in opening or saving file");

        }
        System.out.println("Complete");
    }
}
Run Code Online (Sandbox Code Playgroud)

片段-2

    import java.io.*;
    import java.net.*;
    public class SerializableTest **implements Serializable**{

    int a= 10;
    String test="Serialize test";

    public static void …
Run Code Online (Sandbox Code Playgroud)

java serialization

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

对于多个类的实例,Volatile关键字无法正常工作

我已经阅读了几乎所有帖子中的volatile(即使它不是静态的)变量在线程之间共享.当一个线程更新变量时,第二个线程获取更新的值.但是当我在本地机器上运行代码时,运行java 7.它没有给出预期的结果

代码 -

public class StatciVolatile3 {

    public static void main(String args[]) {
        new ExampleThread2("Thread 1 ").start();
        new ExampleThread2("Thread 2 ").start();
    }

}

class ExampleThread2 extends Thread {
    private volatile int testValue = 1;

    public ExampleThread2(String str) {
        super(str);
    }

    public void run() {
        for (int i = 0; i < 3; i++) {
            try {
                System.out.println(getName() + " : " + i);
                if (getName().compareTo("Thread 1 ") == 0) {
                    testValue++;
                    System.out.println("Test Value T1: " + testValue);
                }
                if …
Run Code Online (Sandbox Code Playgroud)

java multithreading volatile

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