Re: Math.random()
Lew wrote:
maya wrote:
String[] textFileNames = directory.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".jpg") || name.endsWith( ".JPG");
}
});
ArrayList photos = new ArrayList();
for (int i=0; i < textFileNames.length; i++) {
System.out.println(textFileNames[i] + " -- " + i);
photos.add(new File(textFileNames[i]));
}
System.out.println("");
Collections.shuffle(photos);
Object _photosArr[] = photos.toArray();
The trouble with this idiom is that you create an array, *copy* it into
a List, then *copy* it back into an array. That's very wasteful. If
you use Arrays.asList() as I suggested elsethread, then you skip both
the repeated add() step and the toArray() step.
Reiterating the code fragment:
public static File [] getImagesShuffled()
{
File directory = new File(System.getProperty("user.dir"));
File [] files = directory.listFiles( new FileFilter()
{
public boolean accept( File file )
{
return file.getName().toLowerCase().endsWith(".jpg");
}
} );
Collections.shuffle( Arrays.asList( files ) );
return files;
}
This will save both memory and execution time, a rare case when there
isn't a tradeoff between them.
You should also genericize your Collections classes when you do use
them, and make the widest appropriate type for the variable even if the
object type is narrower:
List <File> photos = new ArrayList <File> ();
Lew, thanks for your response.. it's not that I dont pay attention to
responses.. but sometimes responders post just a snippet of code that I
don't know where to put it in the class and dont know how to make it
work and such.. I new if I could convert that ArrayList back to a
regular array it would work.. so I just figured out how to do that and
it worked...;)
(well, sort of, as I mentioned yesterday I'm still having some problems..)
the code you post today,
public static File[] getImagesShuffled()
what is this? doesn't look like a method.. is it a class? I put this
class inside my class and call it from my class? it's an inner class,
right? sorry, this is why I get confused sometimes, how do I call this
class from inside my class?? not sure exactly what part of my code to
replace w/this code...
thank you...