我怎么可以重写removeEldestEntry方法节约与帮助到文件最旧的条目FileOutputStream,DataOutputStream和writeObject().码.
这是一个例子:
import java.util.*;
public class level1 {
private static final int max_cache = 50;
private Map cache = new LinkedHashMap(max_cache, .75F, true) {
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > max_cache;
}
};
public level1() {
for (int i = 1; i < 52; i++) {
String string = String.valueOf(i);
cache.put(string, string);
System.out.println("\rCache size = " + cache.size() +
"\tRecent value = " + i + " \tLast value = …Run Code Online (Sandbox Code Playgroud) 我有一个链接哈希映射的变量.就像是:
"message": "something"
"code": "0"
Run Code Online (Sandbox Code Playgroud)
我有一个pojo:
String message;
Integer code;
//getters and setters
Run Code Online (Sandbox Code Playgroud)
是否有任何库将linkedhasmap转换为pojo?
假设我有一个LinkedHashMap包含216个条目,我如何Object从a 获得前100个值(此处为类型)LinkedHashMap<Integer, Object>.
我目前正在开展一个项目,我正在从社会安全网站上检索有关名称的数据.基本上我给了一个数字x,和y和z年.我必须从y到z的每一年返回前x个名字.
因此,从网站返回的数据是名称,等级和年份.我必须输入返回到TreeMap,HashMap或LinkedHashMap的每个名称,但我不确定如何存储它们,因为无论我使用什么作为键,都可能存在重复.这一年不能成为关键,因为我每年都会得到最多的x名,所以他们都将来自同一年.如果有多年,会有几个等级1等名称,因为每年都有一个,所以这不是关键.名称本身不是关键,因为多年来同名的名字可能在前几名中.
我已经设法理解了这个项目的大部分复杂部分,但这是最简单的部分之一,我似乎无法理解!
我听说过我可以使用类似年份的方法作为键,并使值成为名称或类似的列表,但我不确定如何在这样的实现中添加值.我非常感谢任何建议!
非常感谢.
编辑:请注意我被特别告知我必须使用TreeMap,HashMap或LinkedHashMap.我听说过MultiMap,但这不是我的选择之一.
这是SpringMVC Controller代码片段:
@RequestMapping(value = "/getCityList", method = RequestMethod.POST)
public @ResponseBody LinkedHashMap<String, String> getCityList(@RequestParam(value = "countryCode") String countryCode, HttpServletRequest request) throws Exception {
//gets ordered city list of country [sorted by city name]
LinkedHashMap<String, String> cityList = uiOperationsService.getCityList(countryCode);
for (String s : cityList.values()) {
System.out.println(s); //prints sorted list [sorted by name]
}
return cityList;
}
Run Code Online (Sandbox Code Playgroud)
这是ajax调用:
function fillCityList(countryCode) {
$.ajax({
type: "POST",
url: '/getCityList',
data: {countryCode:countryCode},
beforeSend:function(){
$('#city').html("<option value=''>-- SELECT --</option>" );
}
}).done(function (data) {
console.log(data); // UNSORTED JSON STRING …Run Code Online (Sandbox Code Playgroud) 我有以下键值系统(HashMap),其中String将是像这样的"2014/12/06"的键.
LinkedHashMap<String, Value>
Run Code Online (Sandbox Code Playgroud)
所以,我可以检索一个知道密钥的项目,但我正在寻找的是一种方法来检索一个值的列表,哪个密钥匹配部分匹配,我的意思是,我怎样才能检索到2014年的所有值?
我想避免像测试列表中的每个项目,暴力或类似的解决方案.
谢谢.
我想从LinkedHashMap中删除在具有给定键的项之后添加的所有项。
我的第一次尝试是:
LinkedHashMap<String, SomeObject> var = new LinkedHashMap<String, SomeObject>();
public void removeEntriesAfter(String key) {
boolean deleteEntries = false;
for (String currentKey : var.keySet()) {
if(deleteEntries) {
var.remove(currentKey);
} else {
if(key.equalsIgnoreCase(currentKey)) {
// Do not remove the current entry
deleteEntries = true;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但后来我收到了java.util.ConcurrentModificationException。
我的第二个想法是先确定键,然后再删除它们。
public void removeEntriesAfter(String key) {
boolean deleteEntries = false;
List<String> listOfEntriesToBeRemoved = new ArrayList<String>();
// Determine entries to be deleted
for (String currentKey : var.keySet()) {
if(deleteEntries) {
listOfEntriesToBeRemoved.add(currentKey);
} …Run Code Online (Sandbox Code Playgroud) 我想要什么?
我想从Firebase数据库中按插入顺序检索对象列表。
如何将对象添加到Firebase数据库中的列表?
mRefUser.push()。setValue(new MessageItem());
mRefUser.push()。setValue(new MessageItem());
。
。
mRefUser.push()。setValue(new MessageItem());
如何添加?
Firebase将每个对象存储为HashMap中的键值对。
我如何检索这些值?
mFireBaseRefnew.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final Map<String, MessageItem> messageMap = new LinkedHashMap<String, MessageItem>();
if (dataSnapshot != null && dataSnapshot.getValue() != null) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
HashMap<String,MessageItem> messageMap = (HashMap<String, MessageItem>) postSnapshot.getValue();
Collection<MessageItem> messageItems = messageMap.values() ;
List<MessageItem> messageItemList = new ArrayList<MessageItem>();
messageItemList.addAll(messageItems);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
Run Code Online (Sandbox Code Playgroud)
我得到什么?
最后说明:-
哈希键是随机的。有什么方法可以获取链接的哈希图而不是哈希图。我不想存储密钥,因为数据库保持顺序,应该有一些方法可以使它们保持相同的顺序,但是我不知道如何获取它们。
LinkedHashMap延伸HashMap.代码中put()不存在方法LinkedHashMap.java.所以我认为如果我可以put()在下面的程序中调用方法,那么它必须是从中继承的put()方法HashMap.
import java.util.*;
class First
{
public static void main(String[] args)
{
LinkedHashMap<Key, String> h=new LinkedHashMap<>(7);
h.put(new Key(3), "Hi");
h.put(new Key(1), "Hello");
h.put(new Key(9), "hru");
System.out.println(h);
}
}
Run Code Online (Sandbox Code Playgroud)
Key.java是:
class Key
{
int i = 0;
Key(int i)
{
this.i=i;
}
public int hashCode()
{
return i;
}
public String toString()
{
return i+"";
}
}
Run Code Online (Sandbox Code Playgroud)
它必须维护'after'和'before'引用以保留插入顺序:http://a.disquscdn.com/uploads/mediaembed/images/3751/7481/original.jpg
但是put()方法in HashMap不知道这些变量.那么如何调用put()维护这些变量呢? …