Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LinkedHashSet没有主插入顺序?_Java_Android_Sharedpreferences_Hashset_Linkedhashset - Fatal编程技术网

Java LinkedHashSet没有主插入顺序?

Java LinkedHashSet没有主插入顺序?,java,android,sharedpreferences,hashset,linkedhashset,Java,Android,Sharedpreferences,Hashset,Linkedhashset,我目前正在构建一个Android应用程序,其中显示名人的名言。我有一个主屏幕和两个其他屏幕,其中我显示所有的报价,另一个显示我最喜欢的报价 因此,当我点击AllQuotesActivity屏幕上的like按钮时,quote和author将保存在LinkedHashSet中,该LinkedHashSet将保存在SharedReferences中,因此我的FavoriteQuotes活动可以获取数据。我可以获得数据,但数据是混合的,即使其他链接说LinkedHashSet保持插入顺序。也许我做错了什

我目前正在构建一个Android应用程序,其中显示名人的名言。我有一个主屏幕和两个其他屏幕,其中我显示所有的报价,另一个显示我最喜欢的报价

因此,当我点击AllQuotesActivity屏幕上的like按钮时,quote和author将保存在LinkedHashSet中,该LinkedHashSet将保存在SharedReferences中,因此我的FavoriteQuotes活动可以获取数据。我可以获得数据,但数据是混合的,即使其他链接说LinkedHashSet保持插入顺序。也许我做错了什么。以下是重要的代码片段:

AllQuotesActivity.java:

SharedPreferences sharedPref;
Set<String> set = new LinkedHashSet();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.all_quotes);

    Resources res = getResources();
    Context context = getApplicationContext();
    this.sharedPref = context.getSharedPreferences(
            "MyPref", Context.MODE_PRIVATE);
    final String[] quotesAndAuthors = res.getStringArray(R.array.quotes);

    button3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            set.add(quotesAndAuthors[counter]);
            set.add(quotesAndAuthors[counter + 1]);
        }
    });

}

@Override
public void onPause() {
    super.onPause();
    Log.d("RichQuotes", "Its paused mkay");

    Editor editor = sharedPref.edit();

    editor.putStringSet("quotesAndAuthors", this.set);
    editor.commit();
}

}
SharedPreferences sharedPref;
Set<String> set = new LinkedHashSet();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.favourite_quotes);

    Resources res = getResources();
    Context context = getApplicationContext();
    this.sharedPref = context.getSharedPreferences(
            "MyPref", Context.MODE_PRIVATE);

    set = sharedPref.getStringSet("quotesAndAuthors", null);

    for (Iterator<String> it = set.iterator(); it.hasNext(); ) {
        String s = it.next();
        Log.v("test", s);
    }
SharedReferences SharedReference;
Set Set=newlinkedhashset();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.all_quotes);
Resources res=getResources();
Context=getApplicationContext();
this.sharedPref=context.getSharedPreferences(
“MyPref”,Context.MODE_PRIVATE);
最终字符串[]quotesAndAuthors=res.getStringArray(R.array.quotes);
button3.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
set.add(quotesAndAuthors[counter]);
set.add(quotesAndAuthors[counter+1]);
}
});
}
@凌驾
公共无效暂停(){
super.onPause();
Log.d(“RichQuotes”,“其暂停的mkay”);
Editor-Editor=sharedPref.edit();
编辑器.putStringSet(“quotesAndAuthors”,this.set);
commit();
}
}
FavoriteQuotesActivity.java:

SharedPreferences sharedPref;
Set<String> set = new LinkedHashSet();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.all_quotes);

    Resources res = getResources();
    Context context = getApplicationContext();
    this.sharedPref = context.getSharedPreferences(
            "MyPref", Context.MODE_PRIVATE);
    final String[] quotesAndAuthors = res.getStringArray(R.array.quotes);

    button3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            set.add(quotesAndAuthors[counter]);
            set.add(quotesAndAuthors[counter + 1]);
        }
    });

}

@Override
public void onPause() {
    super.onPause();
    Log.d("RichQuotes", "Its paused mkay");

    Editor editor = sharedPref.edit();

    editor.putStringSet("quotesAndAuthors", this.set);
    editor.commit();
}

}
SharedPreferences sharedPref;
Set<String> set = new LinkedHashSet();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.favourite_quotes);

    Resources res = getResources();
    Context context = getApplicationContext();
    this.sharedPref = context.getSharedPreferences(
            "MyPref", Context.MODE_PRIVATE);

    set = sharedPref.getStringSet("quotesAndAuthors", null);

    for (Iterator<String> it = set.iterator(); it.hasNext(); ) {
        String s = it.next();
        Log.v("test", s);
    }
SharedReferences SharedReference;
Set Set=newlinkedhashset();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.favorite_quotes);
Resources res=getResources();
Context=getApplicationContext();
this.sharedPref=context.getSharedPreferences(
“MyPref”,Context.MODE_PRIVATE);
set=sharedPref.getStringSet(“quotesAndAuthors”,null);
for(Iterator it=set.Iterator();it.hasNext();){
字符串s=it.next();
Log.v(“测试”,s);
}
我删除了不必要的代码

在FavoriteQuotesActivity.java中,我记录集合以检查其值。日志输出和屏幕上的输出是相同的,都以相同的方式未排序

Set Set=newlinkedhashset()

在这一行中,实例化一个新的空
LinkedHashSet
对象。然后将该对象分配给名为
set
的变量

set=sharedPref.getStringSet(“quotesAndAuthors”,null)

在这一行中,您重新分配了
set
变量以指向其他对象,即调用
getStringSet
返回的
set
对象。我们不知道实现
set
接口的第二个对象的具体类。您可以通过调用
getClass
来询问

您的第一个集,空的
LinkedHashSet
,未被使用。由于没有其他引用指向它,该集成为最终垃圾收集的候选集

Set Set=newlinkedhashset()

在这一行中,实例化一个新的空
LinkedHashSet
对象。然后将该对象分配给名为
set
的变量

set=sharedPref.getStringSet(“quotesAndAuthors”,null)

在这一行中,您重新分配了
set
变量以指向其他对象,即调用
getStringSet
返回的
set
对象。我们不知道实现
set
接口的第二个对象的具体类。您可以通过调用
getClass
来询问


您的第一个集,空的
LinkedHashSet
,未被使用。由于没有其他引用指向它,该集成为最终垃圾收集的候选集。

如果您可以将其简化为一个简单的代码块,实例化链接的哈希集,添加一些数据,并在该集上迭代,这将非常有用。谢谢您的提示,我删除了不必要的代码这可能是不受支持的。我的猜测是,
getStringSet()的返回值
不是一个
LinkedHashSet
。是的,你是对的。你有什么办法解决这个问题吗?如果你能把它简化成一个简单的代码块,实例化一个链接的散列集,添加一些数据,并在该集上迭代,那会很有帮助。谢谢你的提示,我删除了不必要的代码。这可能不受支持。我的猜测是,返回
getStringSet()
中的值不是
LinkedHashSet
。是的,你说得对。有什么办法可以解决这个问题吗?谢谢你指出。我改为set.addAll并添加了StringSet。但问题是“getStringSet()”因为它混合了LinkedHashSet的值。有没有办法克服这个问题?谢谢你指出。我改为set.addAll并添加了StringSet。但是问题是“getStringSet()”因为它混合了LinkedHashSet的值。有没有办法克服这个问题?