Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将集合转换为列表?此集合在Hashmap中用作键。

如何将集合转换为列表?此集合在Hashmap中用作键。
EN

Stack Overflow用户
提问于 2014-07-25 05:01:55
回答 1查看 124关注 0票数 1

你好,我在android中使用了一个可扩展的列表视图.为了填充列表,我使用了hashmap,因为我想将相应的类别映射到它的子目录。我的hashmap类似于Hashmap> .Now,使用了以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ExpandableListAdapter extends BaseExpandableListAdapter 
{

    private Context _context;
    // child data in format of header title, child title
    private Map<SaleDetailsMenuItems, List<ModifList>> _listDataChild;

    public ExpandableListAdapter(Context context, Map<SaleDetailsMenuItems, List<ModifList>> listChildData) 
    {
        this._context = context;
        this._listDataChild = listChildData;
    }
    @Override
    public Object getChild(int groupPosition, int childPosititon) 
    {
        Set<SaleDetailsMenuItems> s = _listDataChild.keySet();
        SaleDetailsMenuItems key = (SaleDetailsMenuItems) s.toArray()[groupPosition];
        //List<SaleDetailsMenuItems> list = new ArrayList<SaleDetailsMenuItems>(s);
        //Log.e("Child in adapter get Child","get child "+this._listDataChild.get(key).get(childPosititon));
        return this._listDataChild.get(key).get(childPosititon);
    }
    @Override
    public long getChildId(int groupPosition, int childPosition) 
    {
        return childPosition;
    }
    @Override
    public View getChildView(int groupPosition, final int childPosition,boolean isLastChild, View convertView, ViewGroup parent) 
    {

     String childText = ((ModifList)getChild(groupPosition, childPosition)).getName();
     String childText1 = "1";
     String childText2 = ((ModifList)getChild(groupPosition, childPosition)).getPrice();
        if (convertView == null) 
        {
            LayoutInflater infalInflater = (LayoutInflater) this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.list_item, null);
        }

        TextView txtListChild = (TextView) convertView.findViewById(R.id.lblListItem);
        TextView txtListChild1 = (TextView) convertView.findViewById(R.id.lblListItem1);
        TextView txtListChild2 = (TextView) convertView.findViewById(R.id.lblListItem2);
        txtListChild.setText(childText);
        txtListChild1.setText(childText1);
        txtListChild2.setText(childText2);
        return convertView;

    }

    @Override
    public int getChildrenCount(int groupPosition)
    {
        SaleDetailsMenuItems key ;
        try
        {
            Set<SaleDetailsMenuItems> s = _listDataChild.keySet();
        key = (SaleDetailsMenuItems) s.toArray()[groupPosition];
        //  List<SaleDetailsMenuItems> list = new ArrayList<SaleDetailsMenuItems>(s);
            //Log.e("Child size in adapter ","get children count "+this._listDataChild.get(key).size());
            this._listDataChild.get(key).size();
        }
        catch(NullPointerException e)
        {
            e.printStackTrace();
            return 0;
        }
        return this._listDataChild.get(key).size();
    }

    @Override
    public Object getGroup(int groupPosition) 
    {
        Set<SaleDetailsMenuItems> s = _listDataChild.keySet();
        //List<SaleDetailsMenuItems> list = new ArrayList<SaleDetailsMenuItems>(s);
        SaleDetailsMenuItems key = (SaleDetailsMenuItems) s.toArray()[groupPosition];
        //Log.e("adapter get group ","get group "+key);
        return key;
    }

    @Override
    public int getGroupCount() 
    {
        //Log.e("Group Count","Group Count "+_listDataChild.keySet().size());
        return _listDataChild.keySet().size();
    }

    @Override
    public long getGroupId(int groupPosition) 
    {
        return groupPosition;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) 
    {
         final int index = groupPosition;
        ExpandableListView mExpandableListView = (ExpandableListView) parent;
        mExpandableListView.expandGroup(groupPosition);

        if (convertView == null) 
        {
            LayoutInflater infalInflater = (LayoutInflater) this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.list_group, null);
        }
        TextView lblListHeader = (TextView) convertView.findViewById(R.id.lblListHeader);
        TextView lblListHeader1 = (TextView) convertView.findViewById(R.id.lblListquantity1);
        TextView lblListHeader2 = (TextView) convertView.findViewById(R.id.lblListprice1);
        Button add = (Button) convertView.findViewById(R.id.btnadd);
        Button minus = (Button) convertView.findViewById(R.id.Button01);


        lblListHeader.setText(((SaleDetailsMenuItems) getGroup(groupPosition)).getName().toString());
        lblListHeader1.setText(((SaleDetailsMenuItems) getGroup(groupPosition)).getQuantity().toString());
        lblListHeader2.setText(((SaleDetailsMenuItems) getGroup(groupPosition)).getPrice().toString());
        minus.setOnClickListener(new OnClickListener() 
        {
            @Override
            public void onClick(View v) 
            {
                // TODO Auto-generated method stub
                listviewAdapter.notifyDataSetChanged();
                putminusquantity(index);
        //listviewAdapter.notifyDataSetChanged();
            }
        });

        add.setOnClickListener(new OnClickListener() 
        {
            @Override
            public void onClick(View v) 
            {
                // TODO Auto-generated method stub
                //Toast.makeText(context, shankar, Toast.LENGTH_SHORT).show();
                //DeleteOrderScreen del = new DeleteOrderScreen();
                listviewAdapter.notifyDataSetChanged();
                putaddquantity(index);
                //listviewAdapter.notifyDataSetChanged();
            }
        });
        return convertView;
    }
    @Override
    public boolean hasStableIds() 
    {
        return false;
    }
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) 
    {
        return true;
    }
}

在这种情况下,set用于从Hashmap.as获取密钥集,set是无序的,我得到了无序的列表,.I想要有序的可扩展列表。那么如何安排我的单子呢??请尽快回复我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-25 05:14:25

一种可能是您不使用HashMap或HashSet,而是使用TreeMap和TreeSet。您输入的对象中有一个正确的compareTo方法,或者您必须使用自定义比较器,这是您在TreeMap或TreeSet的构造函数中提供的。

然后对地图或集合进行排序:例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   // auto sorted because Integer implements Comparable
    SortedSet set = new TreeSet<Integer>();

   // asume MyObject implements Comparable
   SortedSet set = new TreeSet<MyObject>();

   // asume MyObject needs a special other sorting
   SortedSet set = new TreeSet<MyObject>(MyCustomComparator);

与地图相似:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 Map map = new TreeMap<Integer>;

或者你也可以用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SortedMap map = new TreeMap<Integer>;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24956379

复制
相关文章
[1118]设置Maven的编译环境为1.8的方法
遇到的问题: 项目默认使用 jdk1.7, 每次 update maven 的时候, 项目都会重新恢复到1.7进行编译, 导致部分使用1.8新特性的代码会报红
周小董
2022/04/13
1K0
[1118]设置Maven的编译环境为1.8的方法
Mac环境变量设置(以ADB为例)
按回车输入密码后用vi打开用户目录下的bash_profile文件。一定要用sudo,否则没权限保存文件。
毛大姑娘
2020/09/10
3.6K0
ProcessBuilder API 使用教程
Java 的 Process API 为开发者提供了执行操作系统命令的强大功能,但是某些 API 方法可能让你有些疑惑,没关系,这篇文章将详细介绍如何使用 ProcessBuilder API 来方便的操作系统命令。
未读代码
2023/09/01
6350
ProcessBuilder API 使用教程
RocketMQ实战:生产环境中,autoCreateTopicEnable为什么不能设置为true
很多网友会问,为什么明明集群中有多台Broker服务器,autoCreateTopicEnable设置为true,表示开启Topic自动创建,但新创建的Topic的路由信息只包含在其中一台Broker服务器上,这是为什么呢?
丁威
2019/06/15
3.2K1
怎么设置pycharm环境_怎么设置环境光影响物体
不舍昼夜在Pycharm前敲打代码,已经是大半年前的事了,而我也大半年没接触Pycharm找个软件了。今天由于项目需要,重新打开犹如一个陌生软件。折腾几分钟才渐渐回忆起那些熟悉的操作,但这几分钟以及在这几分钟前的对于陌生畏惧,以后都想尽力避免罢了。
全栈程序员站长
2022/09/27
3.5K0
怎么设置pycharm环境_怎么设置环境光影响物体
为npm设置代理
npm全称为Node Packaged Modules。它是一个用于管理基于node.js编写的package的命令行工具。其本身就是基于node.js写的,这有点像gem与ruby的关系。
墨文
2020/02/28
23.2K0
DC启动环境设置
  我们按照前面的基本流程使用DC进行设置,但是这里主要使用的是脚本,因此不能一条一条命令进行演示其效果。在启动DC之前,首先要配置DC的启动环境,也就是那些库的设定。配置DC的启动环境主要是.synopsys_dc.setup配置文件的书写。.synopsys_dc.setup这个文件就是DC的配置文件,它配置了DC启动过程中要执行哪些命令、干哪些事。其中,search_path 、target_library...等等(后面会讲,放在这里给大家留个印象),这些是DC内部的变量名称,用来告诉DC做那些事的方法。
数字芯片社区
2020/07/20
2.1K0
DC启动环境设置
BitShares 2.0 环境设置
BitShares 2.0 环境设置 工作环境:Ubuntu 第一步:准备环境与下载 BitShares 2.0  Core 源代码: bitshares-core 见证节点和命令行钱包,C++代码,基于石墨烯区块链。 sudo apt-get update sudo apt-get install autoconf cmake git libboost-all-dev libssl-dev g++ libcurl4-openssl-dev git clone https://github.com/bi
田春峰-JCJC错别字检测
2018/04/16
7960
pycharm 设置环境变量_电脑环境变量怎么设置
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175266.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
4.5K0
pycharm 设置环境变量_电脑环境变量怎么设置
开发环境通用设置
最近IDE有点问题,每次调整完设置的时候都要搜一次,烦了,直接自己记下来。 开发IDE设置保护色 RGB: red:204;green:232;blue:207 十六进制: CCE8CF Mac 设置环境变量 打开配置文件: vi ~/.bash_profile 加入配置并保存: ANDROID_NDK_CMD=/Users/hardyshi/Documents/Library/android-ndk-r9c/ndk-build export ANDROID_ND
子勰
2018/05/22
5770
ubuntu 18.04下Chromium设置为系统设置
在ubuntu 18.04下挂上ss后firefox能直接上gg了但是chromium上不去 会出现下面两种情况
Enterprise_
2019/06/14
2.8K0
ubuntu 18.04下Chromium设置为系统设置
MacOS环境设置笔记
家里只有一台电脑,大家需要一起用时,最好的方法就是使用不同的账户。不同用户的配置相互独立,比如同一个chrome,两个账户收藏夹是独立的,不会相互影响。 但安装应用时,就会发现,应用是不独立的。一个账户安装了应用,其它账户下也能看到。 对此,我们可以在安装的时候注意安装的目录。mac下通常不是windows这种下一步下一步安装,是把程序拖拽到应用文件夹中。 所以我们可以把某些只有自己需要的应用,移动到个人目录下的应用程序文件夹中。 访达打开后,点击上面工具栏的 前往->个人 (快捷键 Command+shift+H),将应用放入这个 应用程序 文件夹,就只有这个用户看得到。而且启动台上也能看到。
sean.liu
2022/08/03
6490
MacOS环境设置笔记
网站环境设置(1)
在云主机上用nginx跑几个虚拟主机运行几个不同的网站是很常见的事。下面仅是常用步骤的一个备忘记录,尤其免密码sudo的设置在生成环境中是绝对不推荐的。
dhyuan
2022/05/30
7590
C++ 环境设置
如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。
用户7952898
2020/11/09
2.3K0
Linux环境基本设置
安装好Linux系统后,通常要做一些基本设置,比如网络,防火墙等。 1.修改ip地址,执行如下命令: vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes #开机使用 BOOTPROTO=static #ip地址设置为静态 IPADDR=192.168.92.82 #Linux服务器ip地址 GATEWAY=192.168.92.1 #网关地址 NETMASK=255.
sparkle123
2018/04/26
3.8K0
pycharm 设置环境_pycharm 虚拟环境
这个页面有两个选项,New environment using 这个选项是建立一个虚拟的python运行环境,目录就是之前自己设置的项目目录下的venv(virtule environment简称),这个虚拟环境可以包含你运行本工程需要的支持包,并可以在这个虚拟的环境中安装新的支持包,这能给你建立一个相对独立的python环境,这个新建虚拟环境的下面两个子选项的意思是继承全局的site-package,含义就是将自己python路径下的site-package链接到你的venv下面以供使用(在venv下面生成几个配置文件,可以链接到你的本地python/Lib/site-package),第二个子选项的含义是你在这个工程中使用的python解释器可以对其他工程可见。
全栈程序员站长
2022/09/20
9710
pycharm 设置环境_pycharm 虚拟环境
MongoDB设置为Windows服务
       每次使用Mongodb都要开启两个命令行,一个开启主流程程序,一个开启客户端程序。你是否想过更方便的操作方式?对的,那就是把主流程程序设置为Windows的服务,客户端程序也可以自定一个命令行脚本实现快捷启动。以下均以win8系统作为操作系统。
程序新视界
2022/11/30
9130
MongoDB设置为Windows服务
pycharm设置代理_mac pycharm怎么设置环境
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175050.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
3.4K0
pycharm设置代理_mac pycharm怎么设置环境
laravel validate 设置为中文(验证提示为中文)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/113142.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/07
3K0
如何设置python的环境变量_anaconda环境变量手动设置
在python项目实践中,不知道为什么我的os.getenv一直拿不到环境变量,于是我就试了三种设置环境变量的方法,中解决了问题。
全栈程序员站长
2022/09/25
4.6K0
如何设置python的环境变量_anaconda环境变量手动设置

相似问题

paypal通过商家API取消交易

110

PayPal REST API:代表商家发出请求

13

PayPal使用REST API从商家向用户汇款

11

PayPal -商家取消交易

16

codeigniter CI商家paypal

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文