如果您尝试
List<Boolean> alist = new ArrayList<Boolean>();
alist.add(5, true);
您收到错误,因为您无法添加到列表中没有的索引。我能用什么来写:
any.add(73, true)
if any.get(52) {
// Do something
}
只有列表中存储的内容为73时才会为true,否则为false。
答案 0 :(得分:1)
使用自定义HashMap。使用相应的布尔值映射索引。
以下是此类自定义哈希映射的示例:
import java.util.HashMap;
public class IndexMap extends HashMap<Integer, Boolean>
{
private static final long serialVersionUID = 7891095847767899453L;
@Override
public Boolean get(Object key)
{
if (containsKey(key))
return super.get(key);
return false;
}
}
以下是这种地图的演示:
public class Demo
{
public static void main(String[] args)
{
IndexMap map = new IndexMap();
map.put(5, true);
map.put(73, true);
System.out.println(map.get(73)); // Prints true.
System.out.println(map.get(52)); // Prints false.
}
}
答案 1 :(得分:1)
看起来你实际上并没有对布尔值感兴趣,你只想检查一下是否输入了数字。如果是这种情况,HashSet可能是比HashMap更好的选择:
HashSet<Integer> hashSet = new HashSet<Integer>();
hashSet.add(4);
hashSet.add(100843);
hashSet.add(91);
System.out.println(hashSet.contains(4)); //true
System.out.println(hashSet.contains(10)); //false
答案 2 :(得分:0)
List维护元素的顺序,因此如果列表的大小小于特定索引,则不能以任何特定顺序添加元素。
即
element @ particular index addition <= list size
所以你可以移动到Map然后索引将元素和值的索引作为布尔值,即
Map<Integer,Boolean>