2012-10-10 14 views
-2

我是新来的编码Android。我被扔进了一个项目,下面的代码工作,但我真的不明白,这不会帮助我学习。有人会评论每个阶段正在做什么的代码吗?这个Android/Java代码有什么作用?

SharedPreferences myPrefs = this.getSharedPreferences("FileName", MODE_PRIVATE); 
     TreeMap<String, ?> keys = new TreeMap<String, Object>(myPrefs.getAll()); 
     for (Map.Entry<String, ?> entry : keys.entrySet()) { 
      Log.i("map values", entry.getKey()); 

     } 


     List<Pair<Object, String>> sortedByValue = new LinkedList<Pair<Object,String>>(); 
     for (Map.Entry<String, ?> entry : keys.entrySet()) { 
      Pair<Object, String> e = new Pair<Object, String>(entry.getValue(), entry.getKey()); 
      sortedByValue.add(e); 
     } 


    // Pair doesn't have a comparator, so you're going to need to write one. 
     Collections.sort(sortedByValue, new Comparator<Pair<Object, String>>() { 
      public int compare(Pair<Object, String> lhs, Pair<Object, String> rhs) { 

       String sls = String.valueOf(lhs.first); 
       String srs = String.valueOf(rhs.first); 
       int res = sls.compareTo(srs); 
       // Sort on value first, key second 
       return res == 0 ? lhs.second.compareTo(rhs.second) : res; 
      } 
     }); 

     for (Pair<Object, String> pair : sortedByValue) { 
      Log.i("map values", pair.first + "/" + pair.second); 
     } 


     Collection<?> stringArrayList = keys.values(); 
     final CharSequence[] prefsCharSequence = stringArrayList.toArray(new CharSequence[stringArrayList.size()]); 
+0

在将来,您应该逐步调试调试器中的代码,看看它在做什么。那么,如果您仍然有问题,请在SO上发帖。你实际上并没有提出具体的问题 – toadzky

+0

这不是什么问题。如果你不明白它的作用,你就不应该使用代码。问谁是你从谁那里得到的。 (并且你从'网络中提取的任何代码应该有它的描述。) – Eric

回答

2
SharedPreferences myPrefs = this.getSharedPreferences("FileName", MODE_PRIVATE); 
    TreeMap<String, ?> keys = new TreeMap<String, Object>(myPrefs.getAll()); 
    for (Map.Entry<String, ?> entry : keys.entrySet()) { 
     Log.i("map values", entry.getKey()); 

    } 

记录在共享偏好文件中的所有的键 - 值对。

List<Pair<Object, String>> sortedByValue = new LinkedList<Pair<Object,String>>(); 
    for (Map.Entry<String, ?> entry : keys.entrySet()) { 
     Pair<Object, String> e = new Pair<Object, String>(entry.getValue(), entry.getKey()); 
     sortedByValue.add(e); 
    } 

转换具有所有的设置到一个列表中的地图进行排序

Collections.sort(sortedByValue, new Comparator<Pair<Object, String>>() { 
     public int compare(Pair<Object, String> lhs, Pair<Object, String> rhs) { 

      String sls = String.valueOf(lhs.first); 
      String srs = String.valueOf(rhs.first); 
      int res = sls.compareTo(srs); 
      // Sort on value first, key second 
      return res == 0 ? lhs.second.compareTo(rhs.second) : res; 
     } 
    }); 

自定义比较排序对的列表。它比较值。如果它们相等,则比较第二个值。

for (Pair<Object, String> pair : sortedByValue) { 
     Log.i("map values", pair.first + "/" + pair.second); 
    } 

打印排序后的首选项。

Collection<?> stringArrayList = keys.values(); 
    final CharSequence[] prefsCharSequence = stringArrayList.toArray(new CharSequence[stringArrayList.size()]); 

将SharedPreferences文件中的密钥转换为一个集合,然后转换为一个字符串列表。

+0

谢谢,非常感谢 –