相关疑难解决方法(0)

实现Map并保持插入顺序的Java类?

我正在寻找一个具有键值关联的java类,但不使用哈希.这是我目前正在做的事情:

  1. 添加值到a Hashtable.
  2. 获取一个迭代器Hashtable.entrySet().
  3. 迭代所有值并:
    1. 获取一个Map.Entry迭代器.
    2. Module根据值创建类型(自定义类)的对象.
    3. 将类添加到JPanel.
  4. 显示面板.

这个问题是我无法控制返回值的顺序,所以我不能以给定的顺序显示值(不对代码进行硬编码).

我会使用一个ArrayListVector为此,但稍后在代码中我需要抓取Module给定Key 的对象,我无法使用ArrayListVector.

有没有人知道一个可以执行此操作的免费/开源Java类,或者Hashtable根据添加时间来获取值的方法?

谢谢!

java dictionary key-value

438
推荐指数
5
解决办法
24万
查看次数

如何在Java中按键对Map值进行排序?

我有一个Map,它包含键和值的字符串.

数据如下:

"问题1","1"
"问题9","1"
"问题2","4"
"问题5","2"

我想根据其键对地图进行排序.所以,最后,我会question1, question2, question3......等等.


最终,我试图从这个Map中获取两个字符串.

  • 第一个字符串:问题(按顺序1.10)
  • 第二个字符串:答案(与问题的顺序相同)

现在我有以下内容:

Iterator it = paramMap.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry pairs = (Map.Entry) it.next();
    questionAnswers += pairs.getKey() + ",";
}
Run Code Online (Sandbox Code Playgroud)

这让我得到一个字符串中的问题,但他们不是有序的.

java dictionary hashmap

343
推荐指数
10
解决办法
54万
查看次数

HashMap的元素顺序错误

我需要从文件中读取两列(都是String),并将第一列的值保存在HashMap中,其中Integer是计数器.

例如,如果我正在阅读的文件是

Apple Fruit
PC    Device
Pen   Tool
...
Run Code Online (Sandbox Code Playgroud)

而代码是

    String line="";
    int counter=1;
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("test.txt"),"Unicode"));
    while ((line = reader.readLine()) != null)
    {
        String[] words;
        words= st.split(" ");
            tokens.put(counter, words[0]);
        counter+=1;
    }
Run Code Online (Sandbox Code Playgroud)

问题是当我打印HashMap值时,我发现值与origianl文件中的值的顺序不同

        for (Map.Entry<Integer, String> token:tokens.entrySet())
    {
        System.out.println(token.getKey() + token.getValue());
    }
Run Code Online (Sandbox Code Playgroud)

我得到了以下内容

1   Apple
3   Pen
4   whatever
2   ..etc
Run Code Online (Sandbox Code Playgroud)

我不知道是什么问题?!你可以帮助我吗?

java hashmap

3
推荐指数
2
解决办法
3788
查看次数

ExpandableListView 未按正确顺序出现

我正在编写一个 Android 应用程序,我决定使用可扩展的列表视图。我有我需要的一切,列表工作正常,但是当我填充它时,组的顺序似乎与它们应该的顺序不同,这是一个例子: 未扩展

展开

如您所见,子值很好,只有父值以随机顺序出现。这是我拥有的完整代码:

我的片段代码:

public class BuildingsFragment extends Fragment {


public BuildingsFragment() {
    // Required empty public constructor
}


public static BuildingsFragment newInstance(Context context) {
    BuildingsFragment fragment = new BuildingsFragment();

    return fragment;
}


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_buildings, container, false);


    final ExpandableListView expandableListView = (ExpandableListView) view.findViewById(R.id.expandableListViewBuildings);
    HashMap<String, List<String>> expandableListDetail = ExpandableListDataPump.getData();
    List<String> expandableListTitle = new …
Run Code Online (Sandbox Code Playgroud)

java android hashmap expandablelistview

1
推荐指数
1
解决办法
1038
查看次数