相关疑难解决方法(0)

单值映射Java的多个键

我认为我的问题与此类似:如何使用多个键实现Map?但有一个重要的区别.在那个问题中(如果我对它的理解是正确的,请告诉我,如果不是这样),键应该始终是唯一的.我希望在表单中有一个Map: MyMap ,其中键不一定是唯一的.如果这没有意义,我基本上想要一个二维数组,而不是通过坐标引用元素,我想通过成对的对象来引用它们.

任何人对这个有效的图书馆或自己实施的好方法都有任何想法吗?对于图书馆来说,我看过Apache Commons和Guava,似乎没有我想要的东西.

java map multidimensional-array data-structures

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

覆盖"等于"方法:如何确定参数的类型?

我正在尝试覆盖equals参数化类的方法.

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (!(obj instanceof Tuple))
        return false;

    Tuple<E> other = (Tuple<E>) obj; //unchecked cast
    if (!a0.equals(other.a0) && !a0.equals(other.a1)) {
        return false;
    }
    if (!a1.equals(other.a1) && !a1.equals(other.a0)) {
        return false;
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能确保<E>该的other对象是一样的this

java generics type-safety

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

如何在java中存储一对数组?

我是java的新手,我想存储一对双打的数组.我的代码看起来像这样:

import java.util.ArrayList;
import java.util.Map.Entry;

List<Entry<Double, Double>> values = new ArrayList<>();
Entry<Double, Double> pair;
// set pair values:
// pair.setKey(0.5); // this method does not exists
// pair.setValue(3.6);
values.add(pair);
Run Code Online (Sandbox Code Playgroud)

如何初始化pair变量?是否有更好的结构来存储我的双打数组?

java arrays

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

如何在Java中实现通用的`max(Comparable a,Comparable b)`函数?

我正在尝试编写一个需要两个Comparables 的泛型max函数.

到目前为止我有

public static <T extends Comparable<?>> T max(T a, T b) {
    if (a == null) {
        if (b == null) return a;
        else return b;
    }
    if (b == null)
        return a;
    return a.compareTo(b) > 0 ? a : b;
}
Run Code Online (Sandbox Code Playgroud)

这无法编译

The method compareTo(capture#5-of ?) in the type Comparable<capture#5-of ?> is not applicable for the arguments (T)
Run Code Online (Sandbox Code Playgroud)

我认为这是说,?in Comparable<?>可以被解释为参数a的一种类型,而参数b的另一种类型,因此它们无法进行比较.

我如何从这个洞中挖掘自己?

java generics comparable

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

Java:如何编写`zip`函数?什么应该是返回类型?

什么应该是zip函数的返回类型?(zip与大多数其他语言一样,例如在这里阅读)

我想到了一些Pair类型,但在Java中并不存在.通常认为这是因为专门的Pair-class比一般的更好(参见这个问题).但是,这在一般zip功能中是不可能的.

java

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

地图上的最近点

我正在制作一个程序,您可以点击地图查看其周围区域的"特写视图",例如在Google地图上.

当用户点击地图时,它会获得他们点击的X和Y坐标.

让我们假设我有一系列布尔值,这些特写视图图片是:

public static boolean[][] view_set=new boolean[Map.width][Map.height];
//The array of where pictures are.  The map has a width of 3313, and a height of 3329.
Run Code Online (Sandbox Code Playgroud)

程序搜索文件夹,其中图像被命名为在地图上拍摄地点的X和Y坐标.该文件夹包含以下图像(以及更多,但我只列出五个):

2377,1881.jpg, 2384,1980.jpg, 2389,1923.jpg, 2425,1860.jpg, 2475,1900.jpg
Run Code Online (Sandbox Code Playgroud)

这意味着:

view_set[2377][1881]=true;
view_set[2384][1980]=true;
view_set[2389][1923]=true;
view_set[2425][1860]=true;
view_set[2475][1900]=true;
Run Code Online (Sandbox Code Playgroud)

如果用户点击例如2377,1882的X和Y,那么我需要程序来确定哪个图像最接近(在这种情况下答案是2377,1881).

任何帮助将不胜感激,谢谢.

java algorithm computational-geometry

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

Java - 从方法返回多个对象类型的最佳方法

在我的DAO我有一个方法,我建立2个不同的对象,我想要返回这两个对象,但我不知道最好的方法是做什么.我已经看过使用? extends myObject,创建另一个类,它包含我想要返回的两个对象,并且只是使用List<Object>.

长话短说我为什么需要这些类似的对象是在屏幕上显示1而另一个用于primefaces dataexporter,据我所知,它不处理对象中的列表.

班级人员

public class Person() {
  firstName = null;
  lastName = null;
  List<Programs> programs = new ArrayList<Programs>();

  // Getters and setters
}
Run Code Online (Sandbox Code Playgroud)

类DataExporterPerson

public class DataExporterPerson() {
  firstName = null;
  lastName = null;
  String program = null;

  // Getters and setters
}
Run Code Online (Sandbox Code Playgroud)

DAO方法:

public List<SOMETHING> getPeople() {
  // query db for people

  // build both objects

  return ?????
}
Run Code Online (Sandbox Code Playgroud)

现在我明白我可以很容易地创建另一个对象,如下面的那个,但这似乎是一种低效的做事方式,因为我基本上创建一个对象只是为了从1方法返回.

public class PersonTransporter() {
  Person person = null;
  DataExporterPerson = null;
} …
Run Code Online (Sandbox Code Playgroud)

java inheritance containment

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

使用双键创建hashmap

我正在为我的问题寻找合适的数据结构.我希望能够使用两个键尽可能高效地选择节点对象.插入和删除也需要有效.基本上每个节点对象都有一对两个键.这些对是唯一的,但个别键不是.我需要能够为两个键中的一个选择一组具有特定值的节点.

例:

Node1具有键a1和b1

Node2具有密钥a1和b2

Node3具有密钥a2和b2

我想例如能够选择具有密钥a1,b1的节点以及具有b2作为key2的所有节点.

我当然可以制作两个HashMaps(每个键一个),但这是一种丑陋的解决方案,因为当我添加或删除某些东西时,我必须在两个映射中都这样做.由于会有很多添加和删除,我宁愿一次性完成.有没有人对如何做到这一点有任何想法?

显然,将两个密钥合并在一起的单个密钥并不能解决问题,因为我还需要能够搜索单个密钥而无需搜索整个映射.那不会很有效率.问题是效率问题.我可以在地图中搜索特定键的每个条目,但我想使用哈希,以便我可以立即使用两个键中的任何一个选择多个节点对象.

我不是在寻找类似MultiKeyMap的东西,因为在这个数据结构中第一个键总是保持不变,你只能添加键而不是用不同的键替换第一个键.我希望能够在第一个和第二个键之间切换.

我喜欢并且不想使用相同的密钥存储多个对象.如果您查看示例,您可以看到两个键一起始终是唯一的.这可以看作是单个键,因此我不会在同一个键下存储多个对象.但是如果你看一下各个键,它们并不是唯一的,因此我想存储各个键所引用的多个对象.

java key hashmap data-structures

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

为什么在Java中使用并行数组?

Java中的并行数组是否有任何实际用例?维护相互关联的N个阵列似乎太麻烦了.

例:

int  ages[]   = {0,          17,        2,          52,         25};
String names[] = {"None",    "Mike",    "Billy",    "Tom",      "Stan"};
int  parent[] = {0,          3,         1,          0,          3};
Run Code Online (Sandbox Code Playgroud)

我可以创建一个Person类并将对象存储在一个单独的数组中.会贵一点,但更容易使用吗?

java parallel-arrays

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

java中是否有任何通用名称值对?

在java中是否有任何通用名称值类型的东西?我需要类似的东西

Queue<NameValuePair<String,String>> 存储名称值队列的字符串值.

java generics

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