使用java.util.prefs.preferences.Get获取早于最新条目的首选项



使用java.util.prefs.Preferences API,是否可以获得比上一个条目更早的历史结果?

例如,如果你有

prefs.put("key", "value1");
prefs.put("key", "value2");
return prefs.get("key");

将返回"value2"我能得到"value1"吗?

如果没有,那么实现此功能的最佳替代方案是什么。

如果有人能做得更好,我很乐意接受他们的答案,同时:

import java.util.ArrayList;
import java.util.List;
import java.util.prefs.Preferences;
public class RecentStrings
{
    private final Preferences prefs;
    private final int noRecent;
    private static final int defaultNo = 10;
    private final String indexingKey;
    public RecentStrings()
    {
        this(Preferences.userRoot(), defaultNo, "r");
    }
    public RecentStrings(Preferences prefs, int noRecent, String indexingKey)
    {
        this.noRecent = noRecent;
        this.prefs = prefs;
        this.indexingKey = indexingKey;
    }
    public void setMostRecentString(String file)
    {
        if (!getAllRecentStrings().contains(file))
        {
            for (int i = noRecent-1; i >= 0; i--)
            {
                prefs.put(indexingKey+(i+1), prefs.get(indexingKey+i, ""));
            }
            prefs.put(indexingKey+0, file);
        }
        else
        {
            removeRecentString(file);
            setMostRecentString(file);
        }
    }
    private void removeRecentString(String file)
    {
        List<String> recents = getAllRecentStrings();
        recents.remove(file);
        for (int i=0; i < noRecent; i++)
        {
            String value;
            if (i < recents.size())
            {
                value = recents.get(i);
            }
            else
            {
                value = "";
            }
            prefs.put(indexingKey+i,value);
        }
    }
    public String getMostRecentString()
    {
        return prefs.get(indexingKey+0, "");
    }
    public List<String> getAllRecentStrings()
    {
        List<String> mostRecent = new ArrayList<>();
        for (int i = 0; i < 10; i++)
        {
            String value = prefs.get(indexingKey+i, "");
            if (!value.equals(""))
            {
                mostRecent.add(value);
            }
        }
        return mostRecent;
    }
}

它还处理重复的内容,并将内容从最新的保存到最旧的。

相关内容

  • 没有找到相关文章

最新更新