【问题标题】:List<String> with a Value 'Integer' [closed]具有值“整数”的列表 <String> [关闭]
【发布时间】:2013-09-21 23:07:40
【问题描述】:

还有其他选择吗? (1组)

    class team {
        List<String> team = new ArrayList<String>
        int score = 0;
    }

是否有一个对象可以存储 List 或 Set 'String',并且可以保存 Integer 的值?

提前致谢。

【问题讨论】:

  • 没有。但您可以将该整数转换为String
  • 我不明白你在问什么。您是在问如何制作可以同时接受字符串和整数的 List 或 Set 吗?在这种情况下,如果您使用泛型,那么您必须将它们声明为拥有 Object 类,因为这是 IntegerString 之间唯一的公共超类。
  • 也许List&lt;&gt; 不是您正在寻找的数据结构?这个结构将持有什么实际价值?也许您正在尝试在自定义对象更合适的地方使用List
  • @Kon 想想一个有一定分数的小组。我不想将它们分开存储,而是希望将组和分数作为一个变量。
  • @user2803086 如果您的组是唯一的,您可以使用 HashMap&lt;String, Integer&gt; 。然后,您将向 Map 添加键值对,例如“Group1”,6。

标签: java string list integer


【解决方案1】:

听起来你需要一个 Score 对象:

class Score
{
  int points;
  String groupName;
}

然后是List&lt;Score&gt;

【讨论】:

    【解决方案2】:

    您可能想要的是一个新类型,它同时包含您关心的 Stringint,例如:

    public class Score {
        String group;
        int score;
    }
    
    ...
    
    List<Score> scores = new ArrayList<Score>();
    

    不过,要回答您最初的问题:StringInteger 之间最窄的常见类型是 Object,您可以构造这样的 List

    List<Object> group = new ArrayList<Object>();
    group.add("string");
    group.add(1);
    

    当然,这不仅限于StringInteger 类型,您可以添加任何类型的对象。

    或者,您可以将您的 Integer 强制转换为 String

    String someNumber = String.valueOf(1);
    

    或者构造一个限制性更强的新类,并充当一种联合:

    public class StringOrInteger {
        private final Object value;
        public StringOrInteger(String string) {
            value = string;
        }
        public StringOrInteger(Integer integer) {
            value = integer;
        }
        public Object getValue() {
            return value;
        }
    }
    

    ...然后列出这些:

    List<StringOrInteger> group = new ArrayList<StringOrInteger>();
    

    (至少会在编译时受到限制)

    你可以对这个类更感兴趣,并让它返回一个正确的转换对象,但我想这取决于你想要使用这个的用例。

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 2019-01-06
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 2012-10-05
      相关资源
      最近更新 更多