我有一个现有的int数组,比如int[] pageNumbers = {1, 2, 3}
。
我正在编写一些代码来查看这些页面,并通过另一个int定义每个页面的内容,例如
页面类型:
我正在努力解决的问题是,当我的代码确定了页面是什么时,如何将页面和页面类型配对到数组中。
例如,如果第1页是Front Page,第50页是Contents,第75页是Index,我想要下面定义的内容:
int[] pagesAndTypes = {(1, 25), (2, 50), (3, 75)};
最后,一旦我有了这个数组,我怎么能得到这些值?比如,我想查看索引所在的页面,所以我会编写一个方法来查找数组中的索引,然后找到相邻的值,即页码。
答案 0 :(得分:1)
您可以使用Map(也可能是ArrayList,而不是使用数组,具体取决于您计划索引的方式)。在Map中,每个值都“映射”到一个键,并通过引用键来访问值。
对于你的问题,它看起来像这样:
Map<Int, Int> map = new HashMap<Int, Int>();
map.put(1, 25);
map.put(2, 50);
map.put(3, 75);
查看javadoc tutorial以获取使用Google地图的帮助
答案 1 :(得分:0)
您可以使用Map将一个键与一个值相关联。 在下面的代码中,我使用Map将键存储为整数和值作为字符串。
Map<Integer, String> pageMap = new HashMap<>();
// inserting data
pageMap.put( 25, "Front Page" );
pageMap.put( 50, "Contents" );
pageMap.put( 75, "Index" );
// getting data
// will print Front Page
System.out.println( pageMap.get( 25 ) );
要遍历地图,即查看它存储的内容,您可以执行以下操作:
for ( Map.Entry<Integer, String> e : pageMap.entrySet() ) {
System.out.printf( "%d -> %s\n", e.getKey(), e.getValue() );
}
如果需要保留插入顺序,则需要使用Map接口的Linked实现,如LinkedHashMap。例如:
Map<Integer, String> pageMap = new LinkedHashMap<>();
当您遍历此地图时,所有数据都将按插入顺序显示,因为它将保留此顺序。对于上面给出的HashMap,顺序将取决于HashMap如何存储数据(基于关键对象的hashCode)。
因此,如果您不关心插入数据的顺序,请使用HashMap。如果要保留插入顺序,请使用LinkedHashMap。将存储数据。 Map接口有很多不同的实现。这些Java 7实现可以在https://docs.oracle.com/javase/7/docs/api/java/util/Map.html
找到特别针对您的问题,您将拥有以下内容:
int[] pageNumbers = {1, 25, 3};
Map<Integer, String> pageMap = new HashMap<>();
// inserting data
pageMap.put( 25, "Front Page" );
pageMap.put( 50, "Contents" );
pageMap.put( 75, "Index" );
for ( int page : pageNumbers ) {
String pageTitle = pageMap.get( page );
if ( pageTitle != null ) {
System.out.printf( "The title of the page %d is %s\n", page, pageTitle );
} else {
System.out.printf( "There is not a page title for the page %d\n", page );
}
}
如前所述,您还可以创建一个专门的类来对这些数据进行分组(带有标题或任何其他内容的页码),将其存储在List中,然后迭代这个列表以找到您想要的页面,但对于您的问题,至少对我来说,使用Map似乎是一个更好的方法。
答案 2 :(得分:0)
我想要解决的是,当我的代码确定了页面是什么时,我如何配对页面和页面类型
您通常通过创建自定义类来保存属于的信息来执行此操作:
class DocumentPart{
int startPage;
int partType;
}
然后你可以创建一个数组(或更好的集合,如List
):
List<DocumentPart> documentParts = new ArrayList<>();
你可以放置你的元素:
DocumentPart documentPart = new DocumentPart();
documentPart.startPage=1;
documentPart.partType=25;
documentParts.add(documentPart);