我正在尝试对表示卡值的字符串ArrayList进行排序.因此,有些卡包含字母("King"),有些包含仅包含数字("7")的字符串.我知道使用Collections.sort,但它只对包含字母的字符串进行排序.如何按行编号和按字母顺序对ArrayList进行排序?
编辑:对不起,当我查看排序时,我一定不会太注意.排序正常,我必须被一个10来到2之前的事实所抛弃.谢谢
假设我有一个看起来像这样的对象:
public class Obj {
String foo;
String bar;
}
Run Code Online (Sandbox Code Playgroud)
如果我创建一个Obj类型的arraylist并填充它,有没有办法可以从ArrayList返回数组foo属性中所有对象的列表?
编辑:我应该更清楚,我不想通过迭代这样做
假设我像这样创建一些对象类
public class thing {
private String name;
private Integer num;
public oDetails (String a, Integer b) {
name = a;
num = b;
}
...gets/ sets/ etc
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个arraylist来保存这样的对象类.
ArrayList<thing> myList = new ArrayList<thing>;
thing first = new thing("Star Wars", 3);
thing second = new thing("Star Wars", 1);
myList.add(first);
myList.add(second);
Run Code Online (Sandbox Code Playgroud)
我想包含某种逻辑,以便在这种情况下......当我们尝试添加对象"second"而不是向arrayList添加新对象时,我们将second.getNum()添加到first.getNum().因此,如果您要遍历ArrayList,那么它就是
"Star Wars", 4
Run Code Online (Sandbox Code Playgroud)
我无法想出一个处理这个问题的优雅方法.随着arraylist的增长,搜索它以确定是否存在重复的名称项变得麻烦.任何人都可以提供一些指导吗?
我在Java中有很多类,但这是我第一次尝试序列化任何东西.我创建了自己的课程,其中包括一个arraylist.主要对象是这些类的arraylist.我相信我已经做好了一切,但是当我再读回来时,arraylist总是空着的.
主要(主要是测试)类:
import java.io.*;
import java.util.ArrayList;
public class IOTest {
public static void main(String[] args) {
ArrayList<Info> master = new ArrayList <Info>();
Info a = new Info("a");
Info b = new Info("a");
Info c = new Info("a");
master.add(a);
master.add(b);
master.add(c);
print(master);
save(master);
ArrayList<Info> loaded = new ArrayList <Info>();
load(loaded);
System.out.println("Loaded List:");
System.out.println("Loaded Size:" + loaded.size());
print(loaded);
}
public static void save(ArrayList a){
File f = new File("savefile.dat");
try {
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(a); …Run Code Online (Sandbox Code Playgroud) 我有在我从数据库中获取数据的情况下,我想它上溯造型到ArrayList of objects,然后其向下转换到不同的自定义的ArrayList即List<User>,List<Groups>等等.
我的问题是向上转换为对象,然后向下转换为ArrayList,这将是成本,是高效还是良好的做法.
EDITED
List<User>, List<Groups>我不想获取数据等,而是根据我的需要获取数据ArrayList<objetcs>,我会将数据转发给ArrayList<User>, ArrayList<Groups>以后.
我有一个对象列表,我想用定义的顺序对它进行排序.对于前者 我有一个带有字段的对象String color.我想在颜色字段上对我的列表进行排序,使它总是首先是白色而不是蓝色而不是其他所有(如果可能的话,alph.有序但不是必需的):
Before sorting: After sorting:
orange white
white blue
green yellow
brown orange
yellow black
black brown
... ...
Run Code Online (Sandbox Code Playgroud)
有这么简单的方法吗?
编辑:
我必须添加一个更复杂的...
如果可以有更多颜色具有相同的名称/基数怎么办?对于前者 whiteX,whiteY,whiteZ,blueA,blueB,......
所有的白人都必须比所有的黄色首先出现,而不是所有的黄色.用比较器解决这个问题仍有可能吗?(我无法想象......)
我有一个项目的ArrayList,我希望能够通过只输入一个Item属性从列表中删除一个Item,例如它的数字(int ItemNumber).当我检查物品数量时,我也想做同样的事情.
这是我 equals()和contains()方法,做我需要在这里做任何改变?
public boolean contains(T anEntry) {
boolean found = false;
for (int index = 0; !found && (index < numberOfEntries); index++) {
if (anEntry.equals(list[index]))
found = true;
}//end for
return found;
} // end contains
public boolean equals(Object object){
Item item = (Item) object;
if (itemNo == item.itemNo)
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud) 假设我有一个由任意方法返回的列表:
List<E> someList = someObject.getList();
Run Code Online (Sandbox Code Playgroud)
someList可以someObject在另一个线程中随时更改.我无权访问someObject,并且someObject.getList()不返回同步或不可变列表实现.
我想迭代someList.不幸的是,由于列表可以更改,通过迭代通常不起作用:
// Sometimes throws ConcurrentModificationException
for(E element : someObject.getList()) {
doSomething(element);
// ...
}
Run Code Online (Sandbox Code Playgroud)
那么如何迭代外来方法返回的列表(而不是线程安全)呢?
我目前正在传递一个ArrayList来填充Android中TabLayout的标题.数组中的元素是字符串:["RCP", "RYL", "1", "2", "3", "4", "5", "6"].但不一定按顺序排列.
我想首先使用Letter元素(按字母顺序)返回列表,然后逐步增加整数.
我已经尝试过使用该Collections.sort方法,但这会返回一个数字上升的列表,然后在最后添加"R"字符串:["1", "2", "3", "4", "5", "6", "RCP", "RYL"]
为了澄清,我想对我的ArrayList进行排序,以便它返回["RCP", "RYL", "1", "2", "3", "4", "5", "6"]它也需要灵活,因为"R",字符串的标题可能会改变.
谢谢
我有一个称为会话的抽象类。讲座和教程扩展了会议。然后,我有一个称为注册的类,其中包含一个会话列表(讲座和教程)。如何在“注册”中的会话列表中循环,并仅从会话列表中返回讲座列表?
我的下一个问题是我应该存储2个列表。一个讲座列表和一个教程列表,而不是一个会话列表?这是因为会话列表对我来说毫无用处,我每次都必须遍历列表以获取有关讲座和教程的信息。有什么办法让我缺少所有讲座的对象吗?我是Java新手。
public class Enrolment {
private List<Session> sessions;
public Enrolment() {
this.sessions = new ArrayList<>();
}
public addSession(Session session) {
this.sessions.add(session);
}
}
Run Code Online (Sandbox Code Playgroud)
public class Session {
private int time;
public Session(int time) {
this.time = time;
}
}
Run Code Online (Sandbox Code Playgroud)
public class Lecture extends Session {
private String lecturer;
public Lecture(int time, String lecturer) {
super(time);
this.lecturer = lecturer;
}
}
Run Code Online (Sandbox Code Playgroud)
public class Tutorial extends Session {
private String tutor;
private int tutorScore;
public Tutorial(int time, String tutor, int tutorScore) …Run Code Online (Sandbox Code Playgroud)