小编ent*_*erd的帖子

Java中的HashMap如何使用equals()和hashCode()来查找对象?

我已经定义了一个Point类,如下所示,覆盖了equals()hashCode().我期待在main()方法中,"Key Found"将被打印,但事实并非如此.

我的理解是Java使用equals()hashCode()添加或查找对象HashMap.我不确定我在这里做错了什么.

import java.util.*;

public class Point {
  int row = 0;
  int col = 0;

  public Point(int row, int col) {
    this.row = row;
    this.col = col;
  }

  public String toString() {
    return String.format("[%d, %d]", row, col);
  }

  public boolean equals(Point p) {
    return (this.row == p.row && this.col == p.col);
  }

  public int hashCode() {
    return 31 * this.row + this.col;
  }

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

java equals hashmap

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

Java Hashmap内部

我对Java HashMap类几乎没有疑问.这是我的理解

 transient Entry[] table;
Run Code Online (Sandbox Code Playgroud)

表数组将根据值保存数据hashCode().我需要知道这个数组何时初始化.数组长度是基于我们在HashMap初始化期间定义的容量还是默认容量16,如果在调用构造函数时没有定义它?

hashcode如何缩放到数组索引?例如,如果哈希码具有巨大的值,它如何缩放到数组索引,如10,20?

我已经读过,当达到阈值时,将发生重新散列.例如,在默认情况下,当16是容量而0.75是负载因子时,则阈值为16*0.75=12.一旦添加了12个项目,将发生重新加载并且容量将增加.这是否意味着table数组大小增加了?

java arrays hashmap

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

java中的 System.out.println - 是否在本机方法中初始化?

我只是想知道out变量 inSystem.out.println()是否在类的静态块中初始化System。该out字段被声明为最终静态变量,它等于 null ( public final static PrintStream out = null;) 。由于 out 指向 null,我认为它是指向PrintStream某个地方的对象。但除了一个名为registerNatives(). 它是否在本机方法中被指向?为什么要这样做(任何性能优势)?此外,out变量的文档System说:

“标准”输出流。此流已打开并准备好接受输出数据。通常,此流对应于主机环境或用户指定的显示输出或另一个输出目的地。”

谢谢。

java

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

我的 Maven 项目如何在没有 TestNG 尝试运行 JUnit 测试的情况下同时运行 JUnit 和 TestNG?

我有一个 Maven 项目,我需要在其中执行 JUnit 和 TestNG 测试。我pom.xml已经按如下方式设置了 Maven Surefire 插件:

<!-- ... -->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.19.1</version>
  <configuration>
    <argLine>-Xmx1024m</argLine>
    <threadCount>1</threadCount>
  </configuration>
  <dependencies>
    <dependency>
      <groupId>org.apache.maven.surefire</groupId>
      <artifactId>surefire-testng</artifactId>
      <version>2.19.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.surefire</groupId>
      <artifactId>surefire-junit47</artifactId>
      <version>2.19.1</version>
    </dependency>
  </dependencies>
</plugin>
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我使用 Surefire 执行我的单元测试时,所有测试都正确执行,但 TestNG 似乎正在尝试第二次执行 JUnit 测试,并且日志中出现如下异常。

org.testng.TestNGException: 
Failure in JUnit mode for class com.hotwire.api.pricing.impl.PricingConfigIT: could not create/run JUnit test suite: 
Cannot find JUnit method class junit.framework.TestSuite$1.warning
at org.testng.junit.JUnitTestRunner.runFailed(JUnitTestRunner.java:239)
at org.testng.junit.JUnitTestRunner.start(JUnitTestRunner.java:232)
at org.testng.junit.JUnitTestRunner.run(JUnitTestRunner.java:213)
at org.testng.TestRunner$1.run(TestRunner.java:672)
at org.testng.TestRunner.runWorkers(TestRunner.java:1003)
at org.testng.TestRunner.privateRunJUnit(TestRunner.java:703)
at org.testng.TestRunner.run(TestRunner.java:610) …
Run Code Online (Sandbox Code Playgroud)

java junit testng maven maven-surefire-plugin

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

如何使用json节点解析json数组值

我有一个JsonNode包含以下JSON.在该JsonNode对象内部是一个数组.在该数组中有三个字段,其中一个slaid是列表.另外两个是字符串.这是JSON.

{
    "SLA": [
        {
            "slaid": [
                "53637cc144ae8b607e089701"
            ],
            "ragindicator": "Red",
            "name": "r1"
        },
        {
            "slaid": [
                "53637d1844ae8b607e089704"
            ],
            "ragindicator": "Amber",
            "name": "a1"
        },
        {
            "slaid": [
                "53637eac44ae8b607e089706"
            ],
            "ragindicator": "Green",
            "name": "g1"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想解析这个值.我怎么解析它,slaid类型在List<String>哪里?我尝试了一些方法,但我仍然无法找到解决方案.

java json jackson

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

什么是Oracle的默认日期格式?

我有一个Oracle DB,我不控制日期格式.我想知道日期格式是什么,以确保搜索像

select * from search where search_date>='03/16/2016 00:00:00'
Run Code Online (Sandbox Code Playgroud)

按预期工作.

sql oracle date-formatting

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

Gitignore星号Tilde

我有一个.gitignore开放源代码项目的文件,其中包含以下行:

*~
Run Code Online (Sandbox Code Playgroud)

.gitignore文件的上下文中,这行-星号后跟波浪号-是什么意思?

我尝试了谷歌搜索,但无济于事。

git gitignore

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

如何从java中的回车修剪字符串

我有一个字符串:

\n\n\n\Mytext is here\n new line \n\n
Run Code Online (Sandbox Code Playgroud)

在开头和结尾都有未知数量的\n.

我怎样才能修剪这个字符串

Mytext is here\n new line 
Run Code Online (Sandbox Code Playgroud)

以优雅的方式?

我知道我可以使用自己的函数对此进行编码.但是,也许有一个简单的解决方案?

java trim

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

如何自定义 TreeMap 以按降序对键进行排序?

我有一段代码,我试图用它按TreeMap降序对键进行排序,因为当我只使用 时TreeMap,它会根据按升序排列的键进行排序。我收到的错误是:

没有找到适合 TreeMap 的构造函数。

这是怎么回事?

import java.util.TreeMap;
import java.util.Map;
import java.util.Comparator;
import java.util.Map.Entry;
import java.util.SortedMap;

public class ChangeMachine {


    public TreeMap<Double, Integer> dispenseChange(Double changeAmount, TreeMap<Double, Integer> coinsMap) {
        TreeMap<Double, Integer> coinDispenserMap = new TreeMap<>();
        for (Map.Entry<Double, Integer> coin : coinsMap.entrySet()) {
            if (!(changeAmount > coin.getKey())) {
                coinDispenserMap.put(coin.getKey(), 0);
                continue;
            }
            int noOfCoins = (int) (changeAmount / coin.getKey());
            coinDispenserMap.put(coin.getKey(), noOfCoins);
            Double remainder = changeAmount % coin.getKey();
            changeAmount = remainder;
            if (changeAmount == 0.0) {
                break;
            } …
Run Code Online (Sandbox Code Playgroud)

java sorting treemap

0
推荐指数
1
解决办法
1343
查看次数

用Java解析Java代码

是否可以使用正则表达式解析某些Java代码?

因此,假设我int要从中获取变量列表:

int abc1 = 1;
int abc2 = abc1 + 1;
int abd3 = abc1 + abc2;
Run Code Online (Sandbox Code Playgroud)

我想把这些放进去ArrayList

所以像这样:

private void parse(String s){

    List<List<String>> variables = new ArrayList<List<String>>();

    list.add(new ArrayList<String>);//var type
    list.add(new ArrayList<String>);//var name
    list.add(new ArrayList<String>);//var data

    Pattern p = Pattern.compile();//This is what I want
    Matcher m = p.matcher(s);

    while(m.find()){
        String match = m.group();
        Pattern p2 = Pattern.compile();//Here as well
        Matcher m2 = p.matcher(s);
        while(m2.find()){
            for(int i = 0; i < m.groupCount()){
                //add the variables …
Run Code Online (Sandbox Code Playgroud)

java regex parsing

-2
推荐指数
2
解决办法
909
查看次数