我在Java中有一个比较器类来比较Map条目:
public class ScoreComp implements Comparator<Object> {
public int compare(Object o1, Object o2) {
Entry<Integer, Double> m1 = null;
Entry<Integer, Double> m2 = null;
try {
m1 = (Map.Entry<Integer, Double>)o1;
m2 = (Map.Entry<Integer, Double>)o2;
} catch (ClassCastException ex){
ex.printStackTrace();
}
Double x = m1.getValue();
Double y = m2.getValue();
if (x < y)
return -1;
else if (x == y)
return 0;
else
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译这个程序时,我得到以下内容:
warning: [unchecked] unchecked cast
found : java.lang.Object
required: java.util.Map.Entry<java.lang.Integer,java.lang.Double>
m1 = (Map.Entry<Integer, Double>)o1; …Run Code Online (Sandbox Code Playgroud) 我有一个小问题,并想知道如何解决它.我有一个泛型类Tuple<A,B>,现在我想根据A和B对它们的元组进行排序.它应该如下所示:
未排序:
(1,5) (2,8) (6,8) (1,4) (2,4)
排序方式:
(1,4) (1,5) (2,4) (2,8) (6,8)
出于这个原因,我想到public int compareTo(Tuple<A, B> other)在Tuple类中实现一个通用的compare方法().唯一的问题是你可以为类参数化的所有对象(例如A = Integer,B = String)也必须实现compareTo方法,以便整个过程能够工作.
有没有办法确保元组可以容纳的所有对象实现Comparable接口?
或者有没有其他建议如何解决这个问题?
谢谢
我正在尝试创建一个具有"Pair"作为其键的Cache,并从该帖子中获取该Pair类.
我尝试着:
CacheLoader<Pair<String, String>, String> loader =
new CacheLoader<Pair<String, String>, String>() {
public String load(Pair<String, String> key) {
return GetRatingIdentityByShortNameLoader(key.first, key.second);
}
};
_ratingIdCache = CacheBuilder.newBuilder()
.concurrencyLevel(a_conclevel.intValue())
.maximumSize(a_maxsize.intValue())
.expireAfterAccess(a_maxage.intValue(), TimeUnit.MINUTES)
.build(loader);
Run Code Online (Sandbox Code Playgroud)
哪个无法在Eclipse中编译(helios,java 1.6):
CacheBuilder类型中的方法构建(CacheLoader)不适用于参数(new CacheLoader,String>(){})
有没有人对如何解决这个问题有任何建议?我需要有一个存储"ID"的缓存的目标,其中"主键"是"评级机构"+"评级".
番石榴10.0.1
我需要一个Java 泛型类来表示任何类型的无序对.同时我看到两个解决方案:
HashSet 存储对元素Pair带有覆盖的类hashCode和equals(制作Pair(a, b)和Pair(b, a)等于).是否有意义?你会建议什么?
我Thread从ServletContextListener初始化上下文开始,并在上下文被销毁时尝试停止它.这堂课是:
public enum BlinkLedTask {
INSTANCE;
private Logger logger = RpiLogger.getLogger(getClass());
private Task task;
private ExecutorService service;
private BlinkLedTask() {
}
public void run(String[] frequency) {
stop();
task = new Task(frequency);
service = Executors.newSingleThreadExecutor(RpiThreadFactory.INSTANCE);
service.execute(task);
}
public void stop() {
if(Objects.isNull(task) || Objects.isNull(service)) {
return;
}
try {
task.terminate();
service.shutdownNow();
} catch (Exception cause) {
logger.error(cause.getMessage(), cause);
}
}
private static class Task implements Runnable {
private volatile boolean running = true;
private String[] frequency;
private …Run Code Online (Sandbox Code Playgroud) 这个实例化有什么问题:
Map<String, String, HashMap<String,String>> map = new HashMap<String, String, HashMap<String,String>>();
Run Code Online (Sandbox Code Playgroud) 我有一个方法可以将String记录列表解析为对象并返回List对象.所以我的方法签名是这样的.
public List<ParsedObject> parse(String[] records);
但我也想返回,其他指标,如未成功解析的字符串记录数.现在我感到困惑,如何返回此指标.一种选择是创建另一个包装类,该类包含已解析记录列表和存储这些度量标准的成员.
但是我经常面对这种情况,这样我最终会创建许多包装类.
不确定我是否解释得很好.这里有什么建议?
假设我在java中有一个方法,它在数据库中查找用户并返回他们的地址和他们所在的团队.
我想从方法中返回两个值,并且不希望将方法拆分为两个,因为它涉及数据库调用,并且拆分涉及调用次数的两倍.
鉴于中到大型软件项目的典型问题,最佳选择是什么?
whatGoesHere getUserInfo(String name) {
// query the DB
}
Run Code Online (Sandbox Code Playgroud)
我知道这个问题与现有的问题有些重复,但是每一个问题都有一些元素使得它与这个例子不同,我认为值得再次提问.
可能的重复:
如何实现具有多个键的 Map?
单值映射的多个键 Java
我必须根据两个传入的字符串属性获取枚举的值。我一直在做这个作为单个值的映射。现在我面临着串联。有没有办法让地图有两个键,这样我就可以
Map.get("attr1","attr2");
Run Code Online (Sandbox Code Playgroud)
这将返回正确的枚举。或者我是否只需要连接所有可能的值并将其用作键?
我正在寻找干净的解决方案(我们不都是:P)
老实说,我不知道他们叫什么.我一直无法在互联网上找到文章.
所以我明白你可以这样做:
public struct Pair<T, U>
{
public readonly T Value1;
public readonly U Value2;
public Pair(T fst, U snd)
{
this.Value1 = fst;
this.Value2 = snd;
}
public override String ToString()
{
return "(" + Value1 + ", " + Value2 + ")";
}
public Pair<U, T> Swap()
{
return new Pair<U, T>(Value2, Value1);
}
}
Run Code Online (Sandbox Code Playgroud)
它可能是一个class而不是一个struct.
但我很困惑,出于什么目的?某种性能提升?据我所知,您可以使用这些东西(抱歉,这是什么名称?)来保存值.但是你不会总是知道它应该拥有什么样的数据吗?例如:如果您需要存储产品,则只需制作产品类.当然,你知道它需要掌握什么样的数据,因为你正在设计代码.
所以是的,我想我的问题是:这个的目的是什么,与普通物体相比有什么优势; 您指定了更多
我想我不清楚.我也想知道:有没有充分的理由去创造像上面那样的东西?例如,一个更具体的对象,例如将产品数据存储在产品对象中,而不是一些可以接收所有内容的通用对象.
新:更多文本:另外,你怎么能处理完全通用的错误编码?当我不知道我必须处理什么样的数据类型时,我担心会进行任何类型的数学操作或实际上任何操作.如果它需要我为所有数据类型编写错误处理,那么我真的看不到这些通用参数的优点.