我有一个大小为 5的数组,我需要根据非空值来反转值。
非空值是连续的,但它们可以出现在任何索引中:例如,我可以有 3 个非空值:
c[0], c[1], c[2] or
c[1], c[2], c[3] or
c[2], c[3], c[4]
或其中 4 个以任何顺序出现..
c[0], c[1], c[2], c[3] or
c[1], c[2], c[3], c[4] or
仅当值非空时,我才需要反转数组。因此,在情况 1 中,我将有 c[2]、c[1]、c[0] 等等。
案例将有 c[3]、c[2]、c[1] 等等。
非空元素的数量和数组是动态的并且是根据请求生成的。我无法将元素移动到以索引 0 开头,因为某些外部代码依赖于索引。我所要做的就是反转这个数组并将其发回。
我正在尝试使用哈希图来标记索引,并标记数组中非空元素的数量。不知道在此之后如何进行,任何想法将不胜感激!
HashMap<Integer, String> myHash = new HashMap<Integer, String>();
for(int i = c.length-1; i<=0 ; i--)
{
if(StringUtils.isNotBlank(c[i]))
{
countNonEmpty++;
myHash.put(i, c[i]); //We need to mark the index and decrement by the countNonEmpty
}
}
get the first hash element -
Iterator iter = myHash.keySet().iterator();
while(iter.hasNext())
{
Integer correctIndex = (Integer) iter.next();
//But all I need is the first element in hashMap to decide how to set the reverse array's index.
if(myHash.size() - correctIndex < 0 ) //This means it will have to be 0 to index for array
{
//What is the right index for c[]
c[correctIndex - myHash.size() + 1 ] = myHash.get(correctIndex);
continue;
}
else if(myHash.size() - correctIndex == 0)
{ //What is the right index for c[]
c[correctIndex - myHash.size() + 1 ] = myHash.get(correctIndex);
continue;
}